将天、小时和分钟转换为 UTC - node.js

Posted

技术标签:

【中文标题】将天、小时和分钟转换为 UTC - node.js【英文标题】:Convert day, hour and minute to UTC - node.js 【发布时间】:2017-12-16 16:15:30 【问题描述】:

我会从用户那里获得时间输入来安排任务。选项如下,

星期几、小时和分钟(或) 月份中的日期、小时和分钟(或) 一年中的月份、小时和分钟(或)

用户可以在任何时区。我已经对我的数据库表进行了建模,以将用户输入存储为配置。 在我的表中,我将计算 next_run_at 并填充它,以便 poller 可以根据它找到要运行的作业并执行。

要与时区无关,我的 next_run_at 应该是 UTC。 有没有办法单独在UTC中转换上述配置(天,小时,分钟)并存储它?

TL;DR 我知道我们可以将日期转换为特定时区。有没有办法单独将天、小时和分钟的组合转换为 UTC?

【问题讨论】:

我觉得momentjs在这里很有用。 【参考方案1】:

根据您拥有的日期、小时和分钟构造一个日期。将其转换为 UTC 并返回日期、小时和月份值。

但我认为关于这一天对应的月份会有一些极端情况。

23:00 28th Feb PST 将是06:00 1st Mar UTC

23:00 28th Mar PST 将是 06:00 29th Mar UTC

【讨论】:

【参考方案2】:

你问:

有没有办法单独将天、小时和分钟的组合转换为 UTC?

不,没有通用的方法可以做到这一点。您必须有完整的日期和时间,包括年、月、日、小时和分钟。否则,您无法确定夏令时是否生效,或者标准时间是否已更改。

您将不得不假设一些您没有的数据。例如,您可以假设数据与“现在”相关。请理解,根据您运行代码的时间,您会得到不同的结果。

当然,如果所讨论的时区只有一个固定偏移量,例如亚利桑那州被固定为 UTC-7,则这不适用。只是你不能在世界任何时区的一般情况下假设这一点。

【讨论】:

以上是关于将天、小时和分钟转换为 UTC - node.js的主要内容,如果未能解决你的问题,请参考以下文章

时间序列数据和UTC转换

R将年-月-日-小时本地标准时间转换为UTC

如何将UTC时间转化为本地时间

如何将 UTC 时间转换为本地时间

在 ZonedDateTime 或 Instant 中将小时分钟和秒设置为 00

joda API 和 UTC 时区的分钟/小时时差错误