new Date() 返回不同的时区值,具有不同的输入

森蒂尔
var date1 = "2015-03-29";
console.log(new Date(date1)); //Output:Sun Mar 29 2015 05:30:00 GMT+0530 (India Standard Time)

var date2 = "1869-12-31";
console.log(new Date(date2)); //Output:Fri Dec 31 1869 05:53:20 GMT+0553 (India Standard Time)

var date3 = "1870-01-01";
console.log(new Date(date3)); //Output:Sat Jan 01 1870 05:21:10 GMT+0521 (India Standard Time)

在调试一些 Date() 相关问题时,看到 Date() 具有不同输入的上述行为。

即使我的系统时区是 GMT +05:30,所有三个输入的时区都不同

这是预期的吗?

提前感谢您的任何帮助!

马特·约翰逊-品脱

您显示的值是正确的。

ECMAScript 要求YYYY-MM-DD格式中的仅日期值被视为 UTC。规范

...当 UTC 偏移量表示不存在时,仅日期形式被解释为 UTC 时间,日期时间形式被解释为本地时间。

然后该toString函数将转换为本地时间的字符串表示形式,其中考虑了系统时区。

可以在此处找到印度的 IANA 时区数据,包括丰富的文档注释数据本身如下(从 tzdata 2021a 版开始):

# Zone  NAME            STDOFF    RULES    FORMAT    [UNTIL]
Zone    Asia/Kolkata    5:53:28   -        LMT       1854 Jun 28  # Kolkata
                        5:53:20   -        HMT       1870         # Howrah Mean Time?
                        5:21:10   -        MMT       1906 Jan  1  # Madras local time
                        5:30      -        IST       1941 Oct
                        5:30      1:00     +0630     1942 May 15
                        5:30      -        IST       1942 Sep
                        5:30      1:00     +0630     1945 Oct 15
                        5:30      -        IST

您可以在第二行和第三行数据中从示例中看到两个较早的偏移量。如果您选择更早的日期(1854-06-28 之前),您将获得第一行的偏移量。您还可以看到印度在两个不同的历史时期使用了 +06:30 偏移量。

所有历史记录也以更易读的形式在timeanddate.com 上提供

这就是时区的工作方式。它们不固定为单个数字偏移量,而是一个偏移量适用于特定时间点的时区,并且该偏移量可以根据控制该时区的政府的心血来潮改变。有关更多信息,请阅读timezone tag wiki 中标题为“Time Zone != Offset”的部分

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么 new Date(dateString) 在具有完全相同输入的不同设备上返回两个不同的日期?

Java Instant to Date - 具有不同的时区

Date.now()是否针对不同的时区返回不同的值?

前端的 new Date() 格式与后端的 new Date() 格式不同

New Date() 在不同的地方给出不同的响应

New Date() 在不同的地方给出不同的响应

Javascript:使用特定日期字符串初始化的new Date()返回不同时区的两个不同日期

javascript new Date() 是在 2 个不同的机器/时区上同时创建的吗?

new Date() 在变量方面返回相同的值

new Date()vs Date(),为什么返回不同的时间(-2小时)?

Time.new 和 Date.new .strftime("%A") 为相同的参数返回不同的日期

为什么+ new Date()返回与new Date()。getTime()相同的内容?

更改 new Date() 的时间值

new Date和+ new Date有什么区别?

new Date()在不同环境中的行为不同,为什么?

JavaScript new Date()使用哪个时区?

为什么将参数传递给new Date()会导致与不传递任何参数时不同的时区?

Javascript的“ new Date()”返回“ 2011-02-1”和“ 2011-02-01”的不同日期

为什么New Date()总是返回null?

new Date() 返回未定义

Date.getDay()返回不同的值

Python Pandas groupby,其date列具有不同的值,然后返回一个数据框,其中date列填充了最新的日期

new Date().setFullYear(new Date().getFullYear()) 返回一个 13 位数字

new Date()与Utilities.formatDate(new Date())

javascript: `Date()` 和 `new Date()`

时区更改时,JavaScript Date()不同

有没有办法在 Javascript 中覆盖 `new Date()` 以便它总是返回考虑一个特定硬编码时区的日期?

JavaScript new Date()在IE,Safari中返回NaN

moment(new Date()。toISOString()始终返回相同的日期和时间