首页 > 解决方案 > 使用 luxon 在两个日期之间循环以创建时间间隔

问题描述

我将 UTC 日期存储在这样的集合中:

"orderBeforeStartTime" : ISODate("2021-03-20T14:00:00.000Z"),
"orderBeforeEndTime" : ISODate("2021-03-20T16:00:00.000Z")

我想做一个从开始到orderBeforeStartTime结束的循环,orderBeforeEndTime以填充具有时间间隔的数组。

因此,例如使用上述数据,我应该得到一个这样的数组:

['14:00', '14:30', '15:00', '15:30', '16:00'];

每个数字之间应该有 30 分钟的间隔,直到我到达orderBeforeEndTime.

我的代码:

const { DateTime } = require("luxon");
let startDate;

const endDate = DateTime.fromHTTP(
    item.timeSegment.orderBeforeEndTime.toUTCString()
);

if (new Date() > item.timeSegment.orderBeforeStartTime) {
    startDate = DateTime.utc();
} else {
    startDate = DateTime.fromHTTP(
    item.timeSegment.orderBeforeStartTime.toUTCString()
    );
}

while (startDate <= endDate) {
    item.orderTimeSegments.push(
    startDate.toLocaleString(DateTime.TIME_24_SIMPLE)
    );
    startDate = startDate.plus({ minutes: 30 });
}

这是正确的方法吗?

标签: javascriptdatetimeluxon

解决方案


推荐阅读