当我在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)
这是什么原因?
答案 0 :(得分:1)
Date.parse
未记录为接受该格式的字符串,因此您不能依赖它。
Date.parse
(以及接受字符串的new Date
版本)只需要支持这些字符串格式:
无论Date#toString
输出是什么(但规格并未规定是什么)
根据我的经验,所有实现都支持美国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。