【javascript】 获取时间段内属于星期一(*)的日期们

需求:知道开始时间结束时间,求这段时间内输入星期一或星期二…的日期们
思路:用毫秒数来判断

/* 获取时间段内属于星期一(*)的日期们
 * begin: 开始时间
 * end:结束时间
 * weekNum:星期几 {number}
 */
 function getWeek (begin, end, weekNum){
     var dateArr = new Array();
     var stimeArr = begin.split("-");//=>["2018", "01", "01"]
     var etimeArr = end.split("-");//=>["2018", "01", "30"]

     var stoday = new Date();
     stoday.setUTCFullYear(stimeArr[0], stimeArr[1]-1, stimeArr[2]);
     var etoday = new Date();
     etoday.setUTCFullYear(etimeArr[0], etimeArr[1]-1, etimeArr[2]);

     var unixDb = stoday.getTime();//开始时间的毫秒数
     var unixDe = etoday.getTime();//结束时间的毫秒数

     for (var k = unixDb; k <= unixDe;) {
        let needJudgeDate = msToDate(parseInt(k)).withoutTime;
        //不加这个if判断直接push的话就是已知时间段内的所有日期
        if (new Date(needJudgeDate).getDay() === weekNum) {
            dateArr.push(needJudgeDate);
        }
         k = k + 24*60*60*1000;
     }
     return dateArr;
 }

//根据毫秒数获取日期
function msToDate (msec) {
    let datetime = new Date(msec);
    let year = datetime.getFullYear();
    let month = datetime.getMonth();
    let date = datetime.getDate();
    let hour = datetime.getHours();
    let minute = datetime.getMinutes();
    let second = datetime.getSeconds();

    let result1 = year + 
                 '-' + 
                 ((month + 1) >= 10 ? (month + 1) : '0' + (month + 1)) + 
                 '-' + 
                 ((date + 1) < 10 ? '0' + date : date) + 
                 ' ' + 
                 ((hour + 1) < 10 ? '0' + hour : hour) +
                 ':' + 
                 ((minute + 1) < 10 ? '0' + minute : minute) + 
                 ':' + 
                 ((second + 1) < 10 ? '0' + second : second);

    let result2 = year + 
                 '-' + 
                 ((month + 1) >= 10 ? (month + 1) : '0' + (month + 1)) + 
                 '-' + 
                 ((date + 1) < 11 ? '0' + date : date);

    let result = {
        hasTime: result1,
        withoutTime: result2
    };

    return result;
}
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值