javascript - Safari 为 Date toISOString() 返回不正确的值

标签 javascript google-chrome firefox safari mobile-safari

当我将日期字符串 2019-02-16T10:00:00 转换为时区 GMT+0100 (CET) 中的 JS Date 对象,然后调用 .toISOString() 我希望获得 ISO 日期/时间 2019-12-01T09:10:10.000Z (-1 小时)

但是,我看到的是:

Safari (不正确):

new Date('2019-12-01T10:10:10').toISOString()
\\ returns 2019-12-01T10:10:10.000Z

Chrome (正确):

new Date('2019-12-01T10:10:10').toISOString()
\\ returns 2019-12-01T09:10:10.000Z

FireFox (正确):

new Date('2019-12-01T10:10:10').toISOString()
\\ returns 2019-12-01T09:10:10.000Z

我是不是遗漏了什么,或者这是一个已知的 Safari 问题?

最佳答案

我发现了问题。 Safari 无法将格式为 2019-12-01T10:10:10 的日期字符串转换为 Date 对象而不用搞砸它。解决方案 ( found here) 是重新格式化为所有浏览器都支持的 2019/12/01 10:10:10

// convert into YYYY/MM/DD HH:MM:SS
var dateString = '2019-12-01T10:10:10'.replace(/-/g, '/').replace('T', ' ');

Safari (正确):

new Date(dateString).toISOString()
// returns 2019-12-01T09:10:10.000Z

Chrome (正确):

new Date(dateString).toISOString()
// returns 2019-12-01T09:10:10.000Z

FireFox (正确):

new Date(dateString).toISOString()
// returns 2019-12-01T09:10:10.000Z

希望这可以为下一个沮丧的开发人员节省几个小时!

关于javascript - Safari 为 Date toISOString() 返回不正确的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54726314/

相关文章:

javascript - 在 Kiosk 模式下检测 Google Chrome

java - 在 Chrome 64 中允许访问相机和麦克风

java - selenium webdriver 测试被浏览器空闲警告窗口停止

jquery - 为什么我的 jquery 表单验证不适用于 IE7?它适用于 FF、Opera、Safari 等

javascript - Gulp、Vue、Webpack、Babel 和未捕获的语法错误 : Unexpected token import

javascript - 计算使用日期选择器选取的两个日期之间的时间差

javascript - jQuery 日期范围选择器在 Google Chrome 中给出错误

javascript - document.onkeydown 在 Firefox 中不起作用

javascript - Google 小工具唯一 ID

javascript - jQuery:如何使用文字对象方法中的方法获取全局变量