我已经做了很多工作,以确保我的日期选择器创建的日期与被转换为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/