今日水文章:JS,生成某个时间段内的所有日期
需求背景:图表
- 用户没有选择时间时,我默认显示1个月的数据,也就是我要生成从今天2024-05-09~2024-04-09里的每一天的时间
- 用户有选择时间,则显示时间范围内每一天的时间,闭区间
这个怎么搞呢?
生成当前日期到30天前每一天的日期
很简单,上代码:
getDateStringBeforeDays(days) {
let date = new Date();
date.setDate(date.getDate() - days); // 减去天数
let year = date.getFullYear();
let month = ("0" + (date.getMonth() + 1)).slice(-2); // 月份从0开始,所以加1,并补0
let day = ("0" + date.getDate()).slice(-2); // 日期补0
return year + "-" + month + "-" + day;
}
调用
//循环30天时间,往前推算
for (let i = 30; i >= 0; i--) {
let dayText = this.getDateStringBeforeDays(i);
this.timeList.push(dayText);
}
生成两个时间段内每天的日期
getDatesBetween(startDateStr, endDateStr) {
let startDate = new Date(startDateStr);
let endDate = new Date(endDateStr);
let datesArray = [];
while (startDate <= endDate) {
datesArray.push(startDate.toISOString().split('T')[0]);
startDate.setDate(startDate.getDate() + 1);
}
return datesArray; // 如果需要按照从结束日期到开始日期的顺序,可以使用reverse()
}
调用
this.timeList = this.getDatesBetween(this.search.startDate, this.search.endDate);
时间格式为:yyyy-MM-dd
这样子就可以得到一个系列的时间了,作为横坐标。