js计算两个日期之间的日期数组

这篇博客介绍如何在JavaScript中扩展Date对象的方法,计算并生成两个特定日期之间的所有日期数组。首先,作者扩展了Date对象以计算日期差,然后获取这个差值的长度。接着,详细阐述了如何根据这个差值得到日期数组。最后,演示了调用这些自定义方法来生成所需日期数组的实例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、扩展Date方法

//扩展format方法
Date.prototype.format = function (fmt) {
    var o = {
        "M+": this.getMonth() + 1,
        "d+": this.getDate(),
        "h+": this.getHours(),
        "m+": this.getMinutes(),
        "s+": this.getSeconds(),
        "q+": Math.floor((this.getMonth() + 3) / 3),
        "S": this.getMilliseconds()
    };
    if (/(y+)/.test(fmt)) {
        fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
    }
    for (var k in o) {
        if (new RegExp("(" + k + ")").test(fmt)) {
            fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
        }
    }
    return fmt;
};

//扩展获取日期的方法
Date.prototype.getNewDate = function (count) {

    this.setDate(this.getDate() + count);
    var year = this.getFullYear();
    var month = this.getMonth() + 1;
    var day = this.getDate();
    if (month < 10) {
        month = "0" + month
    }
    if (day < 10) {
        day = "0" + day
    }
    return year + "-" + month + "-" + day;
};

2、获取两个日期的查(length)

var getDateRangeLength = function(startTime, endTime, diffType) {
    //将xxxx-xx-xx的时间格式,转换为 xxxx/xx/xx的格式
    startTime = startTime.replace(/\-/g, "/");
    endTime = endTime.replace(/\-/g, "/");
    //将计算间隔类性字符转换为小写
    diffType = diffType.toLowerCase();
    var sTime =new Date(startTime); //开始时间
    var eTime =new Date(endTime); //结束时间
    //作为除数的数字
    var timeType =1;
    switch (diffType) {
        case"second":
            timeType =1000;
            break;
        case"minute":
            timeType =1000*60;
            break;
        case"hour":
            timeType =1000*3600;
            break;
        case"day":
            timeType =1000*3600*24;
            break;
        default:
            break;
    }
    return parseInt((eTime.getTime() - sTime.getTime()) / parseInt(timeType));
};

3、获取数组

var getDateRangeArray = function(startDate,endDate,diffType){
    var length = getDateRangeLength(startDate,endDate,diffType);
    var dateArray = [];
    //dateArray.push(startDate);
    //console.log(length);
    for(var i=1;i<=length;i++){
        dateArray.push(new Date(endDate).getNewDate(-i));
    }
    return dateArray.sort();
};

4、调用方法求数组

//假设今天是2018-09-07
var startDate = new Date().getNewDate(-6);  //2018-09-01
var endDate = new Date().getNewDate(0);     //2018-09-07

//['2018-09-01','2018-09-02','2018-09-03','2018-09-04','2018-09-05','2018-09-06','2018-09-07']
var dateArray = getDateRangeArray(startDate,endDate,'day');
var dateLength = getDateRangeLength(startDate,endDate,'day');       //时间差

//一般为求环比的时候用到
var lastStartDate = new Date(startDate).getNewDate(-dateLength)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

张音乐

请我喝杯咖啡吧

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值