【发布时间】:2017-05-11 13:45:21
【问题描述】:
知道我的时区是 GMT+2,请考虑以下代码:
-
在自拍 4G 手机上跑步:
myDate = "2017-05-12T09:00:00"; dateFoo = new Date(myDate); // Fri May 12 2017 11:00:00 GMT+0200 (CEST) -
在 Galaxy S7 上运行:
myDate = "2017-05-12T09:00:00"; dateFoo = new Date(myDate); // Fri May 12 2017 09:00:00 GMT+0200 (CEST)
为什么输出不一致,我该如何解决?
我的问题与其他类似问题(例如Why does Date.parse give incorrect results?)不同,因为在我的情况下,我使用的是完全相同的字符串,而且不同的是设备。
【问题讨论】:
-
另一个可能的骗局:stackoverflow.com/q/6427204/5743988
-
我不认为这是 @4castle 错误的副本——这个问题中的日期看起来像格式正确的 ISO 日期,尽管没有明确的时区。
-
@Pointy 输入可能格式正确,但
Date解析器的实现不是标准化的,所以这足以导致任何不一致。 -
我的意思是,永远不要使用
Date.parse或new Date来解析不是来自Date.toString()的日期字符串,因为标准是不确定的,而且它没有无论您使用什么浏览器或什么设备,首先不应期望它是一致的。 -
@Pointy—ECMA-262 不需要时区,因此“2017-05-12T09:00:00”与标准一致,应视为“本地”。虽然依赖内置的日期解析器是一个糟糕的主意。
标签: javascript date phonegap