最近博主在做一个需要兼容IOS的移动端页面,发现一个 new Date() 对象 巨坑!差点丢了饭碗o(╥﹏╥)o

请看问题代码:

var date = new Date("2018-05-24 08:00");

这段代码是获得字符中指定的日期,它Firefox、Chrome中就能运行,但是放在Safari就会报错,错误是NaN,贼气人!

在网上找了一下,将代码这样写就好了:

var date = new Date("2018/05/24 08:00");

应该是不支持 - 的写法;

收集一下各种兼容处理:

1、 简单的将 - 号替换成 /

function toDate(dateString){
    var dateString = "2018/05/24 08:00";
    return new Date(dateString.replace(/\-/g, "/"));
}

2、 除了将 - 号替换成 /,还做了一些别的兼容处理

function toDate(dateString){
    dateString = dateString
        .replace(/T/g, ' ')
        .replace(/\.[\d]{3}Z/, '')
        .replace(/(-)/g, '/');
    if (dateObj.indexOf(".") > 0) {
        dateObj = dateObj.slice(0, dateObj.indexOf("."))
    }
    return new Date(dateObj)
}

3、 转换成通用格式

function toDate(dateString) {
    var dateArr = dateString.split(/[- : \/]/);
    return new Date(dateArr[0], dateArr[1] - 1, dateArr[2], dateArr[3], dateArr[4], dateArr[5]);
}