javascript - 新日期返回无效日期野生动物园
问题描述
希望你们都做得很好。我在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
错误。有人可以告诉我为什么会发生这种情况以及解决此问题的方法是什么
解决方案
问题在于ECMA-262将时区分量定义为 ±HH:mm,因此“-0400”缺少分隔冒号。
由于字符串不符合标准,解析器可以选择应用自己的逻辑,或者返回无效的日期。Safari 应用后一种逻辑。
一般建议是不要使用内置解析器,而是使用库或为您的特定格式实现自己的解析器(不难,只有 4 或 5 行代码)。
推荐阅读
- python - 我的代码正在独立运行,但不会在我的整个项目中运行/打印
- javascript - web 应用程序上的 react-chatbot-kit
- javascript - 使用 react native 和 Async Storage 解决 promise 问题
- azure-data-factory - 检查数组是否包含 Azure 数据工厂中的值
- asp.net-core-webapi - 与 RequestSizeLimit 属性相比,自定义操作过滤器属性的性能较差
- javascript - 如何在具有数据集属性的 JavaScript 中使用解构?
- python - 如何获得不同的随机嵌套字典?
- go - 分析全局变量
- nginx - 为什么 nginx 抱怨这里不允许使用“proxy_read_timeout”指令?
- flutter - setState() 是否被 try & catch 忽略?