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
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
相关文章推荐
- 知道当前日期计算若干天后的日期
- Js获取当前日期及计算当前日期是今年的第多少天
- JS计算当前日期是一年中的第几周
- JS下计算当前日期(当天)后N天出现NAN或者undefined的情况
- js计算当前日期上一个月和下一个月
- js 时间计算(加减天数、返回当前时间后一个星期的日期,返回格式yyyy-MM-dd)
- js计算系统当前日期是星期几的几种方法
- JS计算当前日期+6个月后的日期
- js计算当前日期上一个月和下一个月
- js 当前日期 格式 Javascript 对时间的代号 日期计算
- JS 根据当前日期计算本周一与本周末日期
- js计算系统当前日期是星期几的方法
- JS时间的计算,当前日期加一天或者几天的计算
- JS获取当前日期及计算两日期差
- asp.net)js 在当前日期上加一天和系统发布
- 转贴:sql server 中的日期计算,如当天周的第一天,当前月的第一天
- 用JS计算两个日期之间有多少个休息日
- js动态显示当前日期,时间和星期代码
- 用js实现页面显示当前日期和时间的代码
- 用JS计算两个日期之间有多少个休息日