new Date()解析兼容性

new Date() parsing compatibility

本文关键字:兼容性 Date new      更新时间:2023-09-26

我正试图将一个字符串转换为Date对象,这似乎存在许多跨浏览器兼容性问题。

我的字符串很简单"2016-1-11 10:30"。代码也是简单的

var d = new Date(str);

Firefox和Chrome都对这种格式感到满意,但Safari拒绝将其转换为有效对象。

有没有一种方法或javascript库可以解决这个问题?

Safari讨厌使用连字符作为日期分隔符。

尝试使用以下代码将它们替换为斜杠

var d = new Date(str.replace(/-/g, "/")));

它将用一个正斜杠替换所有出现的-,并将您的日期重新格式化为:2016/1/11 10:30。这应该会让Safari足够满意,但如果您依赖连字符格式,可能会对代码产生其他影响。

正如@James Thorpe所说,moment.js是前进的道路。如果你不可能包含moment.js,那么这里的标准格式应该是YYYY-MM-DDTHH:mm:ssZ

Chrome和Firefox会原谅你,但所有浏览器都不会。