Safari Date() 函数对日期时间字符串(yyyy-MM-dd HH:mm:ss) 提示NaN的问题
var d = new Date("2020-01-23 23:15");
if (isNaN(d)) {
console.log("isNaN");
}else{
console.log("pass");
}
在Chrome下会输出 pass,在Safari会输出 isNaN,根据 ECMAScript 5 ISO-8601 format support: 的说法
Alternatively, the date/time string may be in ISO 8601 format. For example, "2011-10-10" (just date) or "2011-10-10T14:48:00" (date and time) can be passed and parsed.
关于时间和日期字符的格式,有两种可能的方式,一种是 "2020-01-23 23:15"
,另一种是 "2020-01-23T23:15"
, 但 Safari 只支持后者,而Chrome则两种都支持,所以只要写成下面的方式,中间加入一个 T 就可以了。
new Date("2014-02-18T15:00:48")
转换的方式也很简单:
new Date("2014-02-18T15:00:48".replace(/s/, "T"))