Safari Date() 函数对日期时间字符串(yyyy-MM-dd HH:mm:ss) 提示NaN的问题

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"))