MDN的documentation for Date.parse
说:
参数
dateString
表示 RFC822 或 ISO 8601 日期的字符串。描述
parse方法采用日期字符串(例如“Dec 25,1995”)并返回自1970年1月1日00:00:00 UTC以来的毫秒数。本地时区用于解释不包含时区信息的参数。此函数对于基于字符串值设置日期值很有用,例如与setTime方法和Date对象一起使用。
给定一个表示时间的字符串,parse返回时间值。 它接受RFC822 / IETF日期语法(RFC 1123第5.2.14节及其他地方),例如。 “星期一,1995年12月25日格林尼治标准时间13:30:00”。它理解美国大陆时区的缩写,但是对于一般用途,使用时区偏移,例如“Mon,25 Dec 1995 13:30:00 GMT + 0430”(格林威治以东4小时30分钟)子午线)。如果未指定时区,则假定为本地时区。 GMT和UTC被认为是等效的。
或者,日期/时间字符串可以是ISO 8601格式。从JavaScript 1.8.5 / Firefox 4开始,支持ISO 8601的子集。 例如,“2011-10-10”(只是日期)或“2011-10-10T14:48:00(日期和时间)可以传递和解析 .ISO日期中的时区还没有支持,例如“2011-10-10T14:48:00 + 0200”(带时区)尚未给出预期的结果。
然而:
var t = new Date("4/25/2010");
console.log(t);
// Output: Sun Apr 25 2010 00:00:00 GMT+0100 (GMT Daylight Time)
它写在哪里应该support MM/dd/yyyy
格式?
答案 0 :(得分:2)
不是。规范中列出了baseline requirements,但允许实现支持additional formats of their choosing。
String可以解释为本地时间,UTC时间或某个其他时区的时间,具体取决于String的内容。该函数首先尝试根据日期时间字符串格式(15.9.1.15)中调出的规则来解析字符串的格式。 如果字符串不符合该格式,则该函数可能会回退到任何特定于实现的启发式或特定于实现的日期格式。
显然,这些可以有很大的不同,一些常用的格式是模棱两可的,例如“1/2/1970”,可能是2月的第一个或1月的第二个。如果要编写跨平台代码,只需依赖15.9.1.15中的基线格式。
编辑:
重新判断YYYY-MM-DD和YYYY / MM / DD之间的差异,第一个用于返回该日期的零时间,而第二个未指定,因此允许实现生成它喜欢的任何日期。 sepc的相关部分是
此格式包含仅限日期的表格:
- YYYY
- YYYY-MM
- YYYY-MM-DD
...
所有数字必须为10。如果缺少MM或DD字段,则使用“01”作为值。如果缺少mm或ss字段,则使用“00”作为值,并且缺少sss文件的值为“000”。缺席时区偏移的值为“Z”。