繁体   English   中英

Javascript 时区偏移量,日期时间

[英]Javascript timezone offset, date time

我不太确定是否有某种解释或其他内容,但我对 javascript 中的时区偏移有疑问。

我的时区是 +1(德国)

> new Date()
2019-12-04T17:58:30.626Z

我在我的终端中的节点实例中运行了该代码。 我在某种程度上理解,但我当时的实际时间是 18:58:30。

但是,将新日期的时间设置为午夜时。 我清楚地得到了午夜的时间戳。

> new Date().setHours(0, 0, 0, 0)
1575414000000

然而,当我使用它来创建一个新的时间戳而不是输出时,时间是前一天的晚上 11 点。

> new Date(new Date().setHours(0, 0, 0, 0))
2019-12-03T23:00:00.000Z

有人可以解释为什么会发生这种情况以及发生这种情况的原因是什么?

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/setHours

setHours()方法根据本地时间设置指定日期的小时数,并返回自UTC时间 1970 年 1 月 1 日 00:00:00 到更新的 Date 实例表示的时间之间的毫秒数。

请注意,该方法的输入被解释为本地时间,但该方法的输出是 UTC。 所以当你跑

new Date(new Date().setHours(0, 0, 0, 0))

您确实得到了一个表示当地时间午夜的日期对象,它相当于(在您的情况下)UTC 时间的前一天晚上 11 点(字符串末尾的Z表示它是 UTC 时间,或“祖鲁”时间。

两个选项可能会做更多您期望的事情:

  1. 使用setUTCHours()将产生表示午夜 UTC 时间的日期对象。
  2. 将其转换为本地时区的字符串,例如

    new Date(new Date().setHours(0, 0, 0, 0)).toLocaleString()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM