返回時間段內各種時間間隔的數組

這裏時間插件你們自己定義
代碼如下

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;
    };
    function getTimeArr(begin,end,type,interval){  //獲取兩個時間相鄰的數組  type:目前可傳"yyyy-MM-dd hh" "yyyy-MM-dd" "yyyy-MM"格式的時間
        var arr=[];
        if(type=="yyyy-MM-dd hh"){//設置小時間隔
            var beginDate=new Date(begin+" 00:00");
            var endDate=new Date(end+" 23:59");
            var msCount=interval*60*60*1000;  //1小時 2小時 3小時
        }else if(type=="yyyy-MM-dd hh:mm"){//設置分鐘間隔
            var beginDate=new Date(begin+" 00:00");
            var endDate=new Date(end+" 23:59");
            var msCount=interval*60*1000;  //30分鐘 10分鐘 5分鐘 15分鐘
        }else if(type=="yyyy-MM-dd"){//設置天間隔 
            var beginDate=new Date(begin+" 00:00");
            var endDate=new Date(end+" 00:00");
            var msCount=interval*24*60*60*1000;  //1天 2天 3天
        }else if(type=="yyyy-MM"){//獲取月間隔
            var startDate=begin.split("-");
            var endDate1=end.split("-");
            var intervalMonth = (parseInt(endDate1[0]*12)+parseInt(endDate1[1])) - (parseInt(startDate[0]*12)+parseInt(startDate[1]));
            arr=getMonthArr(end,intervalMonth+1);
            return arr;
        }else if(type=="yyyy"){//獲取年間隔
            for(var i=parseInt(begin);i<=parseInt(end);i++){
                arr.push(i.toString());
            }
            return arr;
        }
        var beginMs=beginDate.getTime();
        var endMs=endDate.getTime();
        for(var i=beginMs;i<=endMs;i+=msCount){
            if(type=="yyyy-MM-dd hh"){
                arr.push(new Date(i).Format(type)+":00");
            }else if(type=="yyyy-MM-dd hh:mm"){
                arr.push(new Date(i).Format(type));
            }
            else if(type=="yyyy-MM-dd"){
                arr.push(new Date(i).Format(type));
            }
        }
        return arr;
    }
    function getMonthArr(sDate,n){//得到最近n個月份的數組
        var arr=[];
        sDate=sDate.slice(0,7);
        arr.push(sDate);
        while(n>1){
            arr.unshift(getBeforMonth(sDate));
            sDate=getBeforMonth(sDate);
            n--;
        }
        return arr;
    }
    function getBeforMonth(date){
        var lastMonth="";
        var year=date.split("-")[0],month=date.split("-")[1];
        if(month==1){
            lastMonth=(year-1)+"-"+12;
        }else{
            lastMonth=year+"-"+add0(month-1);
        }
        return lastMonth;
    }

方法調用如下
首先 返回以小時爲間隔的時間數組
在這裏插入圖片描述
這裏開始時間爲2019-08-28 結束時間 2019-08-29

console.log(getTimeArr(startTime,endTime,'yyyy-MM-dd hh',1))//1小時

在這裏插入圖片描述
返回格式可自行修改

然後返回以分鐘爲間隔的時間數組
在這裏插入圖片描述
這裏開始時間爲2019-08-28 結束時間 2019-08-29

console.log(getTimeArr(startTime,endTime,'yyyy-MM-dd hh:mm',5))//5分鐘

在這裏插入圖片描述
再測試一個 15分鐘;

 console.log(getTimeArr(startTime,endTime,'yyyy-MM-dd hh:mm',15))//15分鐘

在這裏插入圖片描述
以天爲時間間隔的
在這裏插入圖片描述

 console.log(getTimeArr(startTime,endTime,'yyyy-MM-dd',1))//1天

在這裏插入圖片描述

console.log(getTimeArr(startTime,endTime,'yyyy-MM-dd',2))//2天

在這裏插入圖片描述
以月爲時間間隔的
在這裏插入圖片描述
這裏我特意選了一個跨年的

console.log(getTimeArr(startTime,endTime,'yyyy-MM'))

在這裏插入圖片描述
最後就是以年爲時間間隔的
在這裏插入圖片描述

console.log(getTimeArr(startTime,endTime,'yyyy'))

在這裏插入圖片描述
最後就是返回格式的問題 這個可以根據自己的需求去改
希望可以幫助大家

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章