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

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_29777207/article/details/85251943

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)

猜你喜欢

转载自blog.csdn.net/qq_29777207/article/details/85251943