Safari为ISOString()返回Date的错误值

约翰·多尔蒂

当我将日期字符串2019-02-16T10:00:00转换为timezone中的JS Date对象GMT+0100 (CET),然后调用.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对象,而无需对其进行任何操作。解决方案(在此处找到)是重新格式化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

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章