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

时间:2017-08-19 10:02:25

标签: javascript

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

2017-08-19T11:54:00MESZ

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

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

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

1 个答案:

答案 0 :(得分:1)

您使用的格式不正确。

看看这个:

(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,但坦率地说,它在许多方面都可能是一件好事。