【问题标题】:How can I get a Date object in UTC with JavaScript?如何使用 JavaScript 在 UTC 中获取 Date 对象?
【发布时间】:2021-09-29 02:30:24
【问题描述】:

所以,我目前正在开发一个日期选择器,但在获取位于 UTC 中的 Date object 时遇到了一些问题。

使用原生方式获取,比如:new Date(Date.UTC(96, 1, 2, 3, 4, 5));,我的log显示Fri Feb 02 1996 04:04:05 GMT+0100 (Western European Standard Time),显然不是UTC。但我在我的方法上要求UTC

那么这里发生了什么?我怎样才能获得Date 对象(我需要在我的ReactDatePicker 上使用)但在UTC?

有没有办法做到这一点?还是完全不可能?

【问题讨论】:

  • 所有 Date 实例在内部都是 UTC。诀窍在于您如何将日期转回字符串。默认情况下,它将是当地时间,但您可以使用各种 UTC methods 以 UTC 术语获取信息。
  • 所以如果我需要将Date object 输入到我的组件中,我无法控制它?
  • 是的,我又在你的上一篇文章中留下了second answer,这对你有用吗?
  • 您的组件可以根据需要呈现日期。关键是没有“UTC 日期”之类的东西,否则 所有 日期实例都是“UTC 日期”。
  • @lejlun,虽然format() 可以工作,但它给我一个string,我仍然需要一个Date,所以它也是不行的

标签: javascript date utc


【解决方案1】:

JavaScript 中的Date 表示特定的时刻。那个时刻在地球上不同的可能时区有许多不同的可能表达方式。您可以序列化时刻 a Date 代表许多不同的方式,但 Date 不知道任何特定的本地时区。

这有点像问“我如何获得二进制/八进制/十六进制的数字?”数字表示沿数轴的大小,但可以用不同的基数表示。数量为大小与任何特定基数中的表达式无关,并且可以在任何基数中序列化。 Dates 也有时间量级和任意数量的可能序列化。

默认情况下,Date 将序列化为您的本地时区,但您也可以使用.toUTCString() 强制它序列化为它的 UTC 表达式。

如果您确实需要同时使用日期和时区,则需要创建自己的结构,例如,

{
    date: new Date(...),
    offset: -4
}

并编写自己的逻辑以在必要时对其进行序列化。

【讨论】:

    猜你喜欢
    • 2014-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-07
    相关资源
    最近更新 更多