gpt4 book ai didi

javascript - 使用 luxon 在两个日期之间循环以创建时间间隔

转载 作者:行者123 更新时间:2023-12-05 04:51:53 26 4
gpt4 key购买 nike

我将 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'];

在到达 orderBeforeEndTime 之前,每个数字之间应该有 30 分钟的间隔。

我的代码:

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 });
}

这是正确的做法吗?

最佳答案

基于documentation ,有一种方法可以在给定 DurationObjectUnits 的情况下迭代 Interval。

const start = new Date("2021-03-20T14:00:00.000Z");
const end = new Date("2021-03-20T16:00:00.000Z");

const interval = Interval.fromDateTimes(
DateTime.fromJSDate(start),
DateTime.fromJSDate(end)
);

const desiredArray = interval.splitBy({ minutes: 30 }).map((d) => d.start);

可能的 split

export interface DurationObjectUnits {
year?: number | undefined;
years?: number | undefined;
quarter?: number | undefined;
quarters?: number | undefined;
month?: number | undefined;
months?: number | undefined;
week?: number | undefined;
weeks?: number | undefined;
day?: number | undefined;
days?: number | undefined;
hour?: number | undefined;
hours?: number | undefined;
minute?: number | undefined;
minutes?: number | undefined;
second?: number | undefined;
seconds?: number | undefined;
millisecond?: number | undefined;
milliseconds?: number | undefined;
}

关于javascript - 使用 luxon 在两个日期之间循环以创建时间间隔,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66712453/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com