给出一个字符串格式的日期,我试图在两个浏览器的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)(错误)
答案 0 :(得分:0)
根据ECMA规范,JavaScript中唯一可以保证的格式是YYYY-MM-DDTHH:mm:ss.sssZ
。其他格式取决于浏览器。
因此,通过2019-02-21T13:25Z
可以在所有浏览器中正常工作。 (注意最后的T和Z)
答案 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中的日期仍然不太了解,但这对我来说就像是魅力。