美文网首页
[JS] 获取两个日期之间的日期数组

[JS] 获取两个日期之间的日期数组

作者: 轻记事APP | 来源:发表于2021-03-24 16:13 被阅读0次
简介

通过封装一个函数,输入开始和结束日期,返回这日期之间的日期数组(核心就是 Date 对象的操作)。

学习

这里有关 Date 日期的知识,https://www.w3school.com.cn/js/js_obj_date.asp,有空再回头改一下下面的低质量代码。

代码
// 代码从网上找到的,这里记录方便查找
// 根据起始日期和结束日期获取时间段数组
// 输入日期的格式:"2021-01-01"
function getAllDate(day1, day2) {
    // fix : 修复输入两个一样日期导致出错
    if(day1 === day2){
      return [day1]
    }

    var getDate = function(str) {
        var tempDate = new Date();
        var list = str.split("-");
        tempDate.setFullYear(list[0]);
        tempDate.setMonth(list[1] - 1);
        tempDate.setDate(list[2]);
        return tempDate;
    }

    var date1 = getDate(day1);
    var date2 = getDate(day2);
    if (date1 > date2) {
        var tempDate = date1;
        date1 = date2;
        date2 = tempDate;
    }

    date1.setDate(date1.getDate() + 1);
    var dateArr = [];
    var i = 0;
    while (!(date1.getFullYear() == date2.getFullYear()
        && date1.getMonth() == date2.getMonth()
        && date1.getDate() == date2.getDate())) {

        var dayStr = date1.getDate().toString();
        if(dayStr.length == 1){
            dayStr = "0" + dayStr;
        }

        var monthStr = (date1.getMonth() + 1) < 10 ? "0" + (date1.getMonth() + 1):date1.getMonth() + 1;

        dateArr[i] = date1.getFullYear() + "-" + monthStr + "-" + dayStr;
        
        i++;
        date1.setDate(date1.getDate() + 1);
    }

    dateArr.splice(0,0,day1)
    dateArr.push(day2);
    return dateArr;
}

相关文章

网友评论

      本文标题:[JS] 获取两个日期之间的日期数组

      本文链接:https://www.haomeiwen.com/subject/ddjhhltx.html