最近在做数据统计方面的内容,需要操作日期,所以整理了下获取js获取日期一些相关的操作。
getDate()里面JQ获取的是LayDate时间控件的日期值,如:2021-06-25 - 2021-06-30
/**
* 初始化日期/获取图表信息
*
* @param type string 时间控件LayDate类型
*
* @return array [[2021-06-25, 2021-06-26, 2021-06-27, 2021-06-28, 2021-06-29, 2021-06-30],[20210625, 20210626, 20210627, 20210628, 20210629, 20210630]]
*/
function getDate(type = 'overview')
{
let date;
switch (type) {
case 'daily' :
date = $('#date-daily').val();
break;
case 'rebate' :
date = $('#date-rebate').val();
break;
default:
date = $('#date-overview').val();
}
if (date) {
let showDateArr = date.split(' - ');
let dateArr = getDateBetween(showDateArr[0], showDateArr[1]);
return [dateArr, formatDate(dateArr)];
}
// 获取近七天日期范围
let dateArr = getDateRange();
return [dateArr, formatDate(dateArr)];
}
/**
* 获取指定日期近num的日期
*
* @param num integer 日期长度
*
* @return array 【2021-06-25, 2021-06-26, 2021-06-27, 2021-06-28, 2021-06-29, 2021-06-30】
*/
function getDateRange(num = 7) {
let myDate = new Date();
let date = myDate.toLocaleDateString().split('/').join('-');
let dayTime = 24 * 3600 * 1000;
let dateTime = new Date(date).getTime() + dayTime;
let dateArr = [];
for (let i = 0; i < num; i++) {
let now = new Date(dateTime -= dayTime);
let month = (now.getMonth() + 1) / 10 >= 1 ? (now.getMonth() + 1) : '0' + (now.getMonth() + 1);
let day = now.getDate() / 10 >= 1 ? now.getDate() : '0' + now.getDate();
dateArr.push([now.getFullYear(), month, day].join('-'));
}
return dateArr.reverse();
}
/**
* 将日期格式化成Ymd格式
*
* @param dateArr array 待转换日期数组:【2021-06-25, 2021-06-26, 2021-06-27, 2021-06-28, 2021-06-29, 2021-06-30】
*
* @return array 【20210625, 20210626, 20210627, 20210628, 20210629, 20210630】
*/
function formatDate(dateArr)
{
let searchDateDrr = [];
for (let i = 0; i < dateArr.length; i ++)
{
let tempDateArr = dateArr[i].split('-');
searchDateDrr[i] = tempDateArr[0] + tempDateArr[1] + tempDateArr[2]
}
return searchDateDrr;
}
/**
* 获取两个日期之间的所有日期
*
* @param startTime string 起始日期:2021-06-25
* @param endTime string 终止日期:2021-06-30
*
* @return array [20210625, 20210626, 20210627, 20210628, 20210629, 20210630]
*/
function getDateBetween(startTime, endTime)
{
let dateArr = [];
let i = 0;
while(startTime <= endTime){
dateArr[i] = startTime;
let timestamp = new Date(startTime).getTime();
let nDate = timestamp + (24 * 60 * 60 * 1000);
let Y = new Date(nDate).getFullYear()+'-';
let m = (new Date(nDate).getMonth() + 1 < 10) ? '0' + (new Date(nDate).getMonth() + 1) + '-' : (new Date(nDate).getMonth() + 1) + '-';
let d = (new Date(nDate).getDate() < 10) ? '0' + new Date(nDate).getDate() : new Date(nDate).getDate();
startTime = Y + m + d;
i++;
}
return dateArr;
}