【发布时间】:2022-12-11 18:51:06
【问题描述】:
我正在尝试在 javascript 中显示日期。我从后端收到这样的日期:2020-09-22T17:10:25Z(来自 Java 中的 Instant 对象)。
当我尝试拨打new Date("2020-09-22T17:10:25Z")时,我得到:Tue Sep 22 2020 20:10:25 GMT+0300 (Eastern European Summer Time)。这个问题是我不在GMT+0300时区,而是GMT+0200。
另一方面,当我尝试致电new Date()时,我得到Thu Dec 08 2022 20:34:11 GMT+0200 (Eastern European Standard Time),这是我正确的时区。
我的问题是,为什么在第一种情况下我得到GMT+0300,而在第二种情况下我得到GMT+0200?我试图解析的字符串中的 Z 代表 Zulu 或 zero hour offset,那么为什么这两种不同的方法使用不同的时区?
【问题讨论】:
-
因为在 2020-09-22(这是您收到的日期),您的时区是夏令时 (GMT +3)
-
new Date不会产生不同的结果。它是一个日期对象,代表来自您的 Java 后端的Instant- 只是一个时间戳,没有附加时区。.toString()使用您的系统时区仅用于格式化.但如果您不想那样,只需使用.toUTCString()即可。
标签: javascript date datetime timezone