八月错误的Date.parse javascript

八月错误的Date.parse javascript,javascript,parsing,datetime,Javascript,Parsing,Datetime,当我使用JavascriptDate.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 St

当我使用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)

原因是什么?

Date.parse
没有记录为接受该格式的字符串,因此您不能依赖它来执行此操作

(以及接受字符串的版本)仅需要支持以下字符串格式:

  • 无论什么
    Date#toString
    输出(但规范没有规定这是什么)

  • 从第5版规范开始,a

根据我的经验,所有的实现都支持美国的
mm/dd/yyyy
格式(即使在非美国地区),但这并没有被指定或记录

如果您的输入字符串是这种格式,您必须自己解析它,或者使用MomentJS之类的库来为您解析


旁注:在你的代码中,你说
Date.parse
给你一个
Date
(或者一个日期字符串;你说警报显示“2014年9月20日星期六00:00:00 GMT-0500(中央标准时间)”等等)。这将相当令人惊讶
Date.parse
返回一个数字,而不是
Date
。要获取等效的
Date
对象,请使用
newdate



*About“(略不正确)”:在ISO-8601中,一个没有时区指示器的字符串定义本地时间。然而,ES5说这些是GMT。

新日期(Date.parse(“2014年8月20日”)
返回
2014年8月20日星期三00:00:00 GMT-0400(EDT)
我用Chrome浏览器。
Date.parse(“2014年8月20日”)
返回时间戳编号,而不是日期。
console.log(Date.parse(“2014年8月20日”)
返回
1408510800000
console.log(Date.parse(“2014年8月20日”)返回后立即返回
1408510800000
。我认为您代码中的注释不正确。我的建议是使用
moment.js