Safari和Chrome的日期不同

时间:2019-04-05 17:42:01

标签: javascript jquery google-chrome safari

给出一个字符串格式的日期,我试图在两个浏览器的safari和chrome中获得相同的结果,但没有成功。我知道有关这方面的帖子很多,但是对此我没有明确的答案

我正在使用此代码

新日期(“ 2019-02-21 13:25” .replace(/ \ s /,'T'))

Chrome的结果 2019年2月21日星期四13:25:00 GMT-0500(东部标准时间)(正确的时间)

Safari的结果 2019年2月21日星期四08:25:00 GMT-0500(EST)

当我使用其他选项

新日期(“ 2019-02-21 13:25” .replace(/ \ s /,'T')+'Z')

Chrome的结果 2019年2月21日星期四08:25:00 GMT-0500(东部标准时间)(错误)

Safari的结果 2019年2月21日星期四08:25:00 GMT-0500(EST)(错误)

2 个答案:

答案 0 :(得分:0)

根据ECMA规范,JavaScript中唯一可以保证的格式是YYYY-MM-DDTHH:mm:ss.sssZ。其他格式取决于浏览器。

因此,通过2019-02-21T13:25Z可以在所有浏览器中正常工作。 (注意最后的T和Z)

https://tc39.github.io/ecma262/#sec-date-time-string-format

根据ECMA规范 enter image description here

答案 1 :(得分:0)

我遇到了一个渐进式应用程序,该应用程序非常适合Android而不是iOS。我发现了Safari的问题。为了得到相同的结果,我找到了问题并修复。

在野生动物园中,它需要这样的日期格式: yyyy / mm / dd,而不是yyyy-mm-dd 。因此,替换日期格式对于chrome和safari都得到相同的结果。

您不需要用Z替换空格或最后添加T。它只是解决了无效的日期问题,但不会显示出与chrome中相同的结果。

var test = new Date('2019-11-15 23:43:22'); // Invalid Date
alert(test);

var testTwo = new Date('2019-11-15 23:43:22'.replace(/-/g, '/')); // works same as chrome
alert(testTwo);

2019年11月15日星期五23:43:22 GMT + 0530(IST)

我对Safari中的日期仍然不太了解,但这对我来说就像是魅​​力。