首页 > 解决方案 > 新日期返回无效日期野生动物园

问题描述

希望你们都做得很好。我在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错误。有人可以告诉我为什么会发生这种情况以及解决此问题的方法是什么

标签: javascriptdateecmascript-6safariinvalidation

解决方案


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

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

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


推荐阅读