Date.parse javascript为8月错误

时间:2014-07-03 06:42:53

标签: javascript parsing datetime

当我在8月份使用Javascript Date.parse作为日期时,我总是得到第一个。这只发生在8月份。

alert(Date.parse("20 Aug 2014"));  // give me Sat Sep 20 2014 00:00:00 GMT-0500 (Central Standard Time)
alert(Date.parse("20 Aug 2014"));  // gives me Fri Aug 01 2014 00:00:00 GMT-0500 (Central Standard Time)

这是什么原因?

1 个答案:

答案 0 :(得分:1)

Date.parse未记录为接受该格式的字符串,因此您不能依赖它。

Date.parse(以及接受字符串的new Date版本)只需要支持这些字符串格式:

根据我的经验,所有实现都支持美国mm/dd/yyyy格式(即使在非美国语言环境中),但这是指定或记录的行为。

如果您的输入字符串采用该格式,您必须自己解析它或使用像MomentJS这样的库来为您完成。


附注:在您的代码中,您说Date.parse正在给您Date(或日期字符串;您说警报显示" 2014年9月20日星期六00:00 :00 GMT-0500(中央标准时间)"等等)。那将是相当令人惊讶的。 Date.parse会返回,而不是Date。要获取等效的Date对象,请使用new Date


*关于"(稍微不正确)":在ISO-8601中,没有时区指示符的字符串定义 local 时间。然而,ES5表示那些是GMT。