创建具有 CET 时区的 Date 对象

Nan*_*h A 6 javascript date node.js

要创建 UTC 日期对象,我们可以编写

new Date(Date.UTC(2012,02,30));
Run Code Online (Sandbox Code Playgroud)

如果没有 Date.UTC,它将获取locale并创建Date对象。如果我必须创建一个 Date 对象来CET在世界的某个地方运行程序,我会怎么做?

T.J*_*der 4

您不会Date在任何特定时区“中”创建 JavaScript 对象。JavaScriptDate对象始终从纪元以来的毫秒 UTC 值开始工作。他们有应用本地时区偏移和规则的方法(getHours与 相对getUTCHours),但仅适用于本地时区。您无法设置Date对象用于其“本地”方法的时区。

您正在做的事情Date.UTC(正确地,除了0on的前导02)只是使用 UTC 中该日期/时间(3 月 30 日午夜)的适当毫秒以来的毫秒值初始化对象,而new Date(2012, 2, 30)会解释它当地时间 3 月 30 日午夜。除了初始化的日期时间之外,对象没有任何区别。Date

如果您需要本地以外的时区,您所能做的就是使用 UTC 版本的Date函数,并为您想要使用的时区应用您自己的偏移量和规则,这并不简单。(偏移量是微不足道的;规则往往不是这样。)

如果你去寻找,你可以找到为你处理时区的 Node 模块。刚刚快速搜索“节点时区”给了我timezone第一个结果。它还为我提供了此 SO 问题此 SO 问题以及Node 时区模块列表的链接。