【问题标题】:Why does Javascript convert times differently? [duplicate]为什么 Javascript 转换时间的方式不同? [复制]
【发布时间】:2017-04-22 18:31:09
【问题描述】:

这是我的两个代码:

var date1 = new Date('2017-04-23');
var date2 = new Date('April 23, 2017');

console.log(date1);
console.log(date2);

这是结果:

Sat Apr 22 2017 17:00:00 GMT-0700 (PDT)
Sun Apr 23 2017 00:00:00 GMT-0700 (PDT)

为什么date1 显示为 22 日 17:00?

【问题讨论】:

标签: javascript date time


【解决方案1】:

JavaScript 的Date 解析行为有些不可靠。似乎当您给它一个 ISO 8601 字符串(例如“2017-04-23”)时,它会将日期解释为您自己的时区,但是当您给它一个任意字符串时,它会将其解释为 UTC 日期。

由于您处于 GMT-7 时区,因此 22 日 17:00 UTC 时间 23 日 00:00,当您打印出日期对象时,它将始终打印出UTC 日期,而不是本地化日期。

因此,总而言之,两个日期都设置为 23 日 00:00,但时区不同。第一个设置为 4 月 23 日 00:00 UTC-7,第二个设置为 4 月 23 日 00:00 UTC。

最好始终明确设置时区以避免这种歧义。

【讨论】:

  • 你的意思是反过来:第一个字符串是 00:00 UTC,第二个是 00:00 UTC-7。 (但它们都以 UTC-7 打印。)同样,您的第一段也是错误的方式。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-09-20
  • 1970-01-01
  • 2019-07-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多