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