Javascript 将时区 MESZ 的日期转换为 NaN

标签 javascript

我遇到了这个日期字符串:

2017-08-19T11:54:00MESZ

当我尝试按如下方式转换它时,它返回 NaN:

let date = Date.parse("2017-08-19T11:54:00MESZ");

似乎无法识别该字符串的结尾。

最佳答案

您使用的格式不正确。

看看这个:

(new Date).toISOString()
"2017-08-19T10:05:18.700Z"

相比之下,您尝试转换的字符串是:

“2017-08-19T11:54:00.MESZ”

Date.parse 适用于 a variant of ISO8601 or RFC2822 。让我们看看这两个选项对您有何帮助。

使用 ISO

它将接受 UTC 时区描述符(“Z”)或时区偏移量( read on )。因此时区指令“MESZ”无效。

要获得有效的解决方案,您必须计算从 MESZ 到 Z 的时区偏移(+2 小时),并附加使用所需时区表示的时间:

Date.parse("2017-08-19T11:54:00+02:00")
1503136440000

使用 RFC2822

示例:“1995 年 12 月 25 日星期一 13:30:00 GMT”

RFC 的问题是 does not accept any other time zone than GMT, UTC and Pacific, Central, Eastern, Mountain times目前这对你来说并不是很有用。您遇到了同样的问题:您必须使用时区偏移指令来表示日期:

Date.parse("Sat, 19 Aug 2017 11:54:00 +0200")
1503136440000

您基本上只能使用 UTC,但坦率地说,从很多方面来说这可能是一件好事。

关于Javascript 将时区 MESZ 的日期转换为 NaN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45770195/

相关文章:

javascript - 在解析其他多个延迟对象后解析延迟对象

javascript - 使用 'var undefined' 测试未定义有什么问题吗

javascript - 获取元素的 ID 并将其设置为变量

javascript - jquery 选择器不能与 [ ] 一起使用

javascript - 有没有一种简单的方法可以使 Javascript 应用程序 SEO 友好?

javascript - html/javascript 中的 ListView

javascript - 发送请求后 jQuery ajax 中止

javascript - 未捕获的 TypeError Javascript

javascript - 将 Knockout 与 Datatables Ajax 源结合使用

javascript - 如何设计一个每秒都需要变化的 reducer ?