为什么 new Date(dateString) return 具有完全相同输入的不同设备上的两个不同日期?
Why does new Date(dateString) return two different dates on different devices with exactly the same input?
知道我的时区是 GMT+2,考虑下面的代码:
运行 在 Selfy 4G 上 phone:
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?)不同,因为在我的例子中,我使用的是完全相同的字符串,只是设备不同。
最初的问题是 Date.parse 在一台设备上将我的本地时间作为时区,而在另一台设备上则采用 UTC。
通过在我的初始 dateString 末尾附加一个 Z,无论使用什么设备,我都强制将日期始终视为 UTC,从而实现与 Date.parse() 一致的结果。
为了获得当地时间的日期,我使用了这个问题的答案:。
你的日期不同是因为时区。
您可以尝试将日期转换为 UTC 日期以获得这样的完美结果。
myDate = "2017-05-12T09:00:00";
dateFoo = new Date(myDate).toUTCString();
知道我的时区是 GMT+2,考虑下面的代码:
运行 在 Selfy 4G 上 phone:
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?)不同,因为在我的例子中,我使用的是完全相同的字符串,只是设备不同。
最初的问题是 Date.parse 在一台设备上将我的本地时间作为时区,而在另一台设备上则采用 UTC。
通过在我的初始 dateString 末尾附加一个 Z,无论使用什么设备,我都强制将日期始终视为 UTC,从而实现与 Date.parse() 一致的结果。
为了获得当地时间的日期,我使用了这个问题的答案:。
你的日期不同是因为时区。 您可以尝试将日期转换为 UTC 日期以获得这样的完美结果。
myDate = "2017-05-12T09:00:00";
dateFoo = new Date(myDate).toUTCString();