您的位置:首页 > Web前端 > JavaScript

JS计算日期,知道当前日期,找到上周的日期(上周五和上上周六)

2014-06-25 15:12 295 查看
function initWeekDay(){

var currentDate = new Date();

var currYear = currentDate.getFullYear();//上上周六

var currYear_2 = currentDate.getFullYear();//上周五

var currMonth = currentDate.getMonth();//上上周六

var currMonth_2 = currentDate.getMonth();//上周五

var currDate = currentDate.getDate();

var currDay = currentDate.getDay(); //星期日为0

var endDate = new Date(currYear,currMonth,currDate);

//正常情况

var preWeekFriday = currDate+(1-(3+currDay));

var preWeekSaturday = currDate+(1-(9+currDay));

var preMonthDays = getLastDay(currYear,currMonth);

//如果是0,则该月为一月

if(currMonth<=0 && preWeekSaturday<=0){

preMonthDays = getLastDay(currYear-1,12);

currYear--;

currMonth = 12;

}

if(currDate>=1 && currDate<6){

if(currMonth!=0){

currMonth = currMonth-1;

currMonth_2 = currMonth_2-1;

}

}else if(currDate>=6 && currDate<=12){

if(currMonth!=0){

currMonth = currMonth-1;

}

}

currMonth = currMonth+1;

currMonth_2 = currMonth_2+1;

if(currMonth_2==0){

currMonth_2 = 12;

currYear_2 = currYear;

}

currMonth = currMonth<10?"0"+currMonth:currMonth;

currMonth_2 = currMonth_2<10?"0"+currMonth_2:currMonth_2;

preWeekFriday = preWeekFriday<=0?preWeekFriday+preMonthDays:preWeekFriday;

preWeekSaturday = preWeekSaturday<=0?preWeekSaturday+preMonthDays:preWeekSaturday;

var lastSaturday = currYear+"-"+currMonth+"-"+preWeekSaturday;

var lastFriday = currYear_2+"-"+currMonth_2+"-"+preWeekFriday;

document.getElementById("beginDate").value = lastSaturday;

document.getElementById("endDate").value = lastFriday;

}

//是否为闰年

function isLeapYear(y) {

var isLeap = false;

if(y%4==0 && y%100!=0 || y%400==0) {

isLeap = true;

}

return isLeap;

}

//每月最后一天

function getLastDay(y,m) {

var lastDay = 28;

// m++; 计算当前月的前一个月,所以不用加1

if(m==1 || m==3 || m==5 || m==7 || m==8 || m==10 || m==12) {

lastDay = 31;

}

else if(m==4 || m==6 || m==9 || m==11) {

lastDay = 30;

}

else if(isLeapYear(y)==true) {

lastDay = 29;

}

return lastDay;

}

解释:

var preWeekFriday = currDate+(1-(3+currDay)); //计算上周五是几号

var preWeekSaturday = currDate+(1-(9+currDay));//计算上上周六是几号

星期几 上周五(差几天) 上上周六(差几天)

星期一 -2 -8

星期二 -3 -9

星期三 -4 -10

星期四 -5 -11

星期五 -6 -12

星期六 -7 -13

星期日 -8 -14

得出如下:

星期一 1-(3+0) 1-(9+0)

星期二 1-(3+1) 1-(9+1)

依次类推……

判断是否跨月的问题:

如果 当前日期>=1 并且 当前日期<6 则求出来的上周五的月份与上上周六的月份均 减1

如果 当前日期>=6 ,那么只将上上周六的月份-1
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: