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

来源:互联网 发布:分布式数据采集系统 编辑:程序博客网 时间:2024/05/17 09:44
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




0 0
原创粉丝点击