我已经做了很多工作,以确保我的日期选择器创建的日期与被转换为javascript Date对象兼容。我遵循了有关此堆栈溢出条目:Invalid date in safari的建议,并使用以下命令从字符串中删除了破折号:
新日期('2016年8月24日12:44'.replace(/-/ g,“ /”));这使事情与除Mac上的浏览器之外的所有其他操作系统和浏览器兼容。 Safari浏览器似乎仍然不喜欢字符串中的完整月份名称。如果我被迫使用该格式,建议使用哪种方法使野生动物园将字符串识别为日期?

最佳答案

尝试使用空格而不是破折号或斜杠进行格式化-它应可在所有现代浏览器(包括IE和Safari)中使用:

var dateString = '24/August/2016 12:44 AM',
    dateFormatted = dateString.replace(/\//g, ' '),
    date = new Date( dateFormatted );




小技巧:

如果在dateString中未指定时区,则默认为用户当前时区。对于您的用例而言,这可能不是问题,但是,如果爱尔兰某人运行上述代码,则与使用相同代码的墨西哥某人相比,他们将获得不同的时间戳。

// defaults to the user's timezone (in my case AEST)
console.log(date); // "Wed Aug 24 2016 00:44:00 GMT+1000 (AEST)"


您可以通过添加时区来解决此问题:

var date = new Date( dateFormatted + ' GMT' );

// timezone is now relative to GMT
console.log(date); // "Wed Aug 24 2016 10:44:00 GMT+1000 (AEST)"

关于javascript - 24/August/2016 12:44 AM在Mac上的Safari中无效,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37851143/

10-12 12:40
查看更多