這裏時間插件你們自己定義
代碼如下
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'))
最後就是返回格式的問題 這個可以根據自己的需求去改
希望可以幫助大家