新日期返回无效日期狩猎

时间:2018-06-05 09:40:43

标签: javascript date ecmascript-6 safari invalidation

希望你们所有人都做得很好。我偶然发现了 SAFARI 中的问题。如果我有这样的日期

2016-05-31T10:00:00

并将此功能应用于日期

new Date(2016-05-31T10:00:00)

它给我一个正确的结果

Thu Mar 31 2016 10:00:00 GMT+0500 (PKT)

但如果我将时区偏移添加到我的日期

2016-05-31T10:00:00-0400

然后在其上应用new Date函数,它开始抛出invalid date错误。有人可以告诉我为什么会发生这种情况并解决这个问题的方法

1 个答案:

答案 0 :(得分:3)

问题是ECMA-262将时区组件定义为±HH:mm,因此“-0400”缺少分隔冒号。

由于字符串不符合标准,因此解析器可以选择应用自己的逻辑,或返回无效的Date。 Safari采用后一种逻辑。

一般的建议是不要使用内置的解析器,要么使用库,要么为你的特定格式实现自己的解析器(不困难,只有4或5行代码)。