JavaScript 日期时区奇怪的行为

标签 javascript date time timezone difference

当我从这个 ISO 字符串“2016-02-01T16:00:00Z”构建日期时,我得到 Mon Feb 01 2016 17:00:00 GMT+0100

由于某些原因,js 似乎增加了一个小时。

我认为这是时区的问题......但我该如何解决这个问题?

就这么做

var date = new Date('2016-02-01T16:00:00Z');
alert(date);

最佳答案

根据规范,ISO 日期字符串被解析为 UTC+0000,由末尾的 Z 字符表示。

Z is the zone designator for the zero UTC offset

当您为 Date() 构造函数指定日期时间字符串时,系统会以 UTC 格式对其进行解析。
Date.prototype.toString() 方法根据您的时区格式化日期,该时区可能与 UTC 不同。因此你得到了这个偏移量。

可以使用 ±hh:mm 在 ISO 字符串末尾指示自定义时区:

var d = new Date('2016-02-01T16:00:00+01:00');
d.toString() // will print "Feb 01 2016 16:00:00 GMT+0100", if you're in GMT+01:00

关于JavaScript 日期时区奇怪的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35659230/

相关文章:

javascript - 使用 JavaScript 计算时差

javascript - 如何将 kebab-case 转换为 PascalCase?

c++ - 如何给用户分配一定的时间回答?

javascript - 获取从日期算起的整周

php - 填充数据中缺失的天数

Java getTime() 从 `time with time zone` 获取时间不正确

javascript - 如何重用ui-grid外部分页和排序方法?

javascript - 法语字符 html - javascript

java - 如何在通过 Java 代码读取 .csv 文件时处理日期时间列

vb.Net时间跨度计算