当我将日期字符串 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/