[英]Generating a 24 hour UTC date range for a timezone using dayjs
我正在尝试创建一个 function ,它使用dayjs
返回给定日期和 UTC 给定时区的开始和结束时间。 这些是我认为我需要的结果示例:
日期 | 时区 | 开始 | 结尾 |
---|---|---|---|
2021-04-15 | 美国/纽约 | 2021-04-15T04:00:00.000Z | 2021-04-16T03:59:59.999Z |
2021-03-27 | 美国/纽约 | 2021-03-27T04:00:00.000Z | 2021-03-28T03:59:59.999Z |
2021-03-13 | 美国/纽约 | 2021-03-13T05:00:00.000Z | 2021-03-14T04:59:59.999Z |
这是我拥有的 function:
dayjs.extend(utc);
dayjs.extend(timezone);
export const getDayRange = (date, timezone = "America/New_York") => ({
start: dayjs.tz(date, timezone).startOf("day").utc().toISOString(),
end: dayjs.tz(date, timezone).endOf("day").utc().toISOString()
});
但是,它不是 output 我预期的结果,并且似乎受到当地时间的影响(因为与 UTC 的偏移在 3 月 28 日发生变化,这是英国夏令时结束而不是纽约)。 我尝试了各种不同结果的链式dayjs
命令组合,但都不正确。
这感觉应该是对dayjs
非常简单的事情,更不用说一个相当常见的用例了。 但是,我正在努力寻找工作。
事实证明,自dayjs
中的时区存在一些问题。 预计下一个版本(1.10.5?)会修复:
https://github.com/iamkun/dayjs/issues/1437
我可以改用 moment(因为 API 大多相同),这解决了我的问题:
export const getDayRange = (date, timezone = "America/New_York") => ({
start: moment.tz(date, timezone).startOf("day").toISOString(),
end: moment.tz(date, timezone).endOf("day").toISOString()
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.