new Date("03/25/2015")
。我尝试将“/”替换为“-”,如下所示:new Date("03-25-2015")
,这也可以工作。然而,在阅读网站时,我没有发现这被提及为有效的替代方法。
它是有效的吗?即使它起作用,我是否应该使用正斜杠而不是横线?
new Date("03/25/2015")
。我尝试将“/”替换为“-”,如下所示:new Date("03-25-2015")
,这也可以工作。然而,在阅读网站时,我没有发现这被提及为有效的替代方法。
它是有效的吗?即使它起作用,我是否应该使用正斜杠而不是横线?
new Date("03-25-2015")
,会得到一个"无效日期"的提示。因此,使用破折号在所有浏览器中都不起作用。最好使用正斜杠(/
)。同样适用于日期之间的句点,new Date("03.25.2015")
在Firefox中无效,但在Chrome中有效。Date
构造函数传递一个字符串时,它会使用与Date.parse
相同的逻辑:
- 将v设置为ToPrimitive(value)。
- 如果Type(v)是String,则
a. 将v解析为日期,完全按照parse方法(15.9.4.2)的方式解析;让V成为这个日期的时间值。
Date.parse
首先使用Date Time String格式,然后使用特定于实现的启发式算法:
该函数首先尝试按照Date Time String格式(15.9.1.15)中指定的规则解析字符串的格式。 如果字符串不符合该格式,则函数可能回退到任何特定于实现的启发式算法或特定于实现的日期格式。
日期时间字符串格式为YYYY-MM-DDTHH:mm:ss.sssZ
。 YYYY
,YYYY-MM
和YYYY-MM-DD
也是有效的。
正如Mottie所指出的那样,在Firefox中new Date("03-25-2015")
会失败。然而,这只是部分原因是由于连字符。如果将年份移至前面(new Date("2015-03-25")
),日期字符串将符合日期时间字符串,它就可以成功了。
来自 MDN https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Date
创建新的Date
对象的方法之一是通过 new Date(dateString);
。其中dateString
被描述为:
表示日期的字符串值。该字符串应该是一个被 Date.parse() 方法(IETF-compliant RFC 2822 timestamps 和 ISO8601 的一种版本)所识别的格式。 注意:强烈不建议使用 Date 构造函数 (和 Date.parse,它们是等价的) 来解析日期字符串,因为浏览器差异和不一致性。
这种创建新的Date
对象的方法使用了Date.parse()
方法来解析dateString
字符串。
来自 https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Date/parse
Date.parse()
被定义为:
Date.parse()方法解析日期的字符串表示形式,并返回自1970年1月1日00:00:00 UTC以来的毫秒数,如果字符串无法识别或包含非法日期值(例如2015-02-31),则返回NaN。
ECMAScript 5 ISO-8601格式支持
日期时间字符串可以采用ISO 8601格式。例如,可以传递和解析"2011-10-10"(仅日期)或"2011-10-10T14:48:00"(日期和时间)。对于仅为ISO 8601日期的字符串,使用UTC时区来解释参数。如果字符串是ISO 8601格式的日期和时间,则将其视为本地时间。
因此,您使用的语法即new Date("03-25-2015")
是有效的语法,但由于浏览器之间存在差异和不一致性,因此不建议使用。
http://www.ecma-international.org/ecma-262/6.0/#sec-date.parse
它说明:
Date.parse ( string )
[...]
该函数首先尝试根据日期时间字符串格式(20.3.1.16)中指定的规则(包括扩展年份)解析字符串的格式。如果字符串不符合该格式,则该函数可能会回退到任何特定于实现的启发式或特定于实现的日期格式。
换句话说,所有实现都保证支持的唯一格式列在日期时间字符串格式(20.3.1.16)中。除此之外的任何格式可能会因实现而异,因此不应使用。
为了简化第20.3.1.16节,日期的唯一有效格式是YYYY-MM-DD。毫不奇怪,W3Schools在其示例中使用了无效格式。
JavaScript文档的另一种可选来源是Mozilla开发者网络(MDN)。它不是官方来源,但比W3Schools更高质量,并在文章底部包含指向官方来源的直接链接。
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date