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

时间:2017-05-11 13:45:22

标签: javascript date phonegap

知道我的时区是GMT + 2,请考虑以下代码:

  • 在Selfy 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)
    

为什么输出会有不一致之处,我将如何解决?

我的问题与其他类似问题(例如this answer)不同,因为在我的情况下,我使用完全相同的字符串,而且它是不同的设备。

1 个答案:

答案 0 :(得分:0)

最初的问题是,一台设备上的Date.parse将我的本地时间作为时区,而在另一台设备上则采用了UTC。

通过在我的初始dateString的末尾附加一个Z,无论设备是什么,我都强制将日期视为UTC,因此使用Date.parse()实现一致的结果。

为了在当地时间获取日期,我使用了这个问题的答案:https://stackoverflow.com/a/1486612/1875581