版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zhangwenwu2/article/details/79148200
项目中有个需求,根据两个时间获取该时间内所有星期五的那天的日期,并且生成一个数组,我先说下我的思路,
首先获取两个时间内的相差的天数,然后进行循环,根据起始日期进行判断是否是周五,然后获取到下一天的日期在进行判断,如果是周五的就把他添加到数组,因为涉及到月份,闰年二月的问题,所以有些棘手,具体解决方法如下代码,
//获取当前时间是周几
function getMyDay(date){
var week;
if(date.getDay()==0) week="周日"
if(date.getDay()==1) week="周一"
if(date.getDay()==2) week="周二"
if(date.getDay()==3) week="周三"
if(date.getDay()==4) week="周四"
if(date.getDay()==5) week="周五"
if(date.getDay()==6) week="周六"
return week;
}
//获取两个时间段相差的天数
function daysBetween(DateOne,DateTwo){
var OneMonth = DateOne.substring(5,DateOne.lastIndexOf ('-'));
var OneDay = DateOne.substring(DateOne.length,DateOne.lastIndexOf ('-')+1);
var OneYear = DateOne.substring(0,DateOne.indexOf ('-'));
var TwoMonth = DateTwo.substring(5,DateTwo.lastIndexOf ('-'));
var TwoDay = DateTwo.substring(DateTwo.length,DateTwo.lastIndexOf ('-')+1);
var TwoYear = DateTwo.substring(0,DateTwo.indexOf ('-'));
var cha=((Date.parse(OneMonth+'/'+OneDay+'/'+OneYear)- Date.parse(TwoMonth+'/'+TwoDay+'/'+TwoYear))/86400000);
return Math.abs(cha);
}
//获取当前日期的下一天日期
function GetDateStr(AddDayCount,time) {
var dd = new Date(time);
dd.setDate(dd.getDate()+AddDayCount);//获取AddDayCount天后的日期
var y = dd.getFullYear();
var m = dd.getMonth()+1;//获取当前月份的日期
var d = dd.getDate();
return y+"-"+m+"-"+d;
}
var stime = "2018-01-05"; //起始时间
var etime = "2018-01-24"; //结束时间
var d_length = daysBetween(stime,etime); //获取两个时间段相差的天数
var save_stime = stime; //保存当前时间
var all_time = []; //存放周五的时间数组
for (var i = 0; i < d_length; i++){ //循环总天数
if(getMyDay(new Date(save_stime)) == "周五"){ //判断当前日期是否为周五
all_time.push(save_stime); //符合条件的添加到数组
}
save_stime = GetDateStr(1,save_stime); //每次循环后把下一天的日期存进save_stime
}
alert(all_time); //打印出即可