【发布时间】:2022-08-15 22:29:38
【问题描述】:
我有一个如下的日期列表
let dates = [\"2022-12-20\", \"2022-12-21\", \"2022-12-22\", \"2022-12-27\", \"2022-12-30\",\"2022-12-31\", \"2023-01-01\"];
我想将日期数组转换为日期范围,如下面的输出所示
let result = [\"20 Dec - 22 Dec\", \"27 Dec 2022\", \"30 Dec - 1 Jan \"];
下面是我的代码:
fun(dates)
{
let startDate = this.dates[0], endDateIndex = - 1, finalDateString = \"\", arr = [];
for (let i = 1; i < dates.length; i++) {
if (moment(startDate).add(i, \'days\').format(\"YYYY-MM-DD\") == moment(dates[i]).format(\"YYYY-MM-DD\")) {
endDateIndex = i;
}
else {
finalDateString += endDateIndex > 0 ? moment(startDate).format(\"DD MMM\") + \" - \" +
moment(dates[endDateIndex]).format(\"DD MMM\") : \'\';
if (endDateIndex == -1) {
finalDateString = finalDateString + \" \" + moment(startDate).format(\"DD MMM\") + \",\"
}
startDate = dates[i];
endDateIndex = -1;
}
}
arr.push(finalDateString);
return arr;
}
在我的代码中,我在日期范围内得到了错误的结果。请指导我建立逻辑。
标签: javascript angular date momentjs date-range