你能用“-"而不是“/"使用JavaScript短日期格式

can you use "-" instead of "/"with JavaScript Short Date format

本文关键字:quot JavaScript 使用 格式 日期      更新时间:2024-03-23

在W3Schools上,他们显示输入带有"/"的短日期格式,如下所示,CCD_ 1。我试着用"-"替换"/",如下所示,CCD_ 2,这也起到了作用。然而,在浏览该网站时,我发现这并不是一个有效的替代方案。

是吗?尽管它有效,但我有什么理由不使用它而使用正斜杠吗?

如果您尝试在Firefox中使用new Date("03-25-2015"),您将收到一条"无效日期"消息。因此,本质上,使用破折号并不能在所有浏览器中都起作用。最好坚持使用前斜线(/)。

new Date("03.25.2015")在Firefox中无效,但在Chrome中无效。

根据ES5规范,当Date构造函数传递字符串时,它将使用与Date.parse相同的逻辑:

  1. 设v为ToPrimitive(值)
  2. 如果Type(v)为String,则

    a。以与解析方法完全相同的方式将v解析为日期(15.9.4.2);设V为该日期的时间值。

Date.parse首先使用日期-时间字符串格式,其次使用特定于实现的启发式方法:

函数首先尝试根据日期-时间字符串格式(15.9.1.15)中调用的规则解析字符串的格式。如果字符串不符合该格式,则函数可能会返回到任何特定于实现的启发式方法或特定于实施的日期格式。

日期时间字符串格式为YYYY-MM-DDTHH:mm:ss.sssZnew Date("03/25/2015")0、YYYY-MMYYYY-MM-DD也是有效的。

正如Mottie所指出的,new Date("03-25-2015")在Firefox中失败了。然而,这只是部分原因的连字符。如果将年份移到前面(new Date("2015-03-25")),则日期字符串将与成功的日期-时间字符串一致。

来自MDNhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date

创建新的Date对象的方法之一是使用new Date(dateString);dateString被描述为:

表示日期的字符串值。字符串的格式应为Date.parse()方法(符合IETF的RFC 2822时间戳以及ISO8601版本)。注意:由于浏览器差异和不一致

这种创建新Date对象的方法使用Date.parse()方法来解析new Date("03-25-2015")0字符串。

发件人https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/parse

Date.parse()定义为:

Date.parse()方法解析日期的字符串表示,并且返回自1970年1月1日00:00:00 UTC以来的毫秒数或者NaN,如果字符串未被识别,或者在某些情况下包含非法日期值(例如2015-02-31)。

ECMAScript 5 ISO-8601格式支持

日期时间字符串可以是ISO 8601格式。例如,"2011-10-10"(仅日期)或"2011-10-10T14:48:00"(日期和时间)可以被传递和解析。哪里字符串仅为ISO 8601日期,UTC时区用于解释论点。如果字符串是ISO 8601中的日期和时间格式,它将被视为本地。

因此,您使用的语法,即new Date("03-25-2015"),是有效的语法,但由于浏览器的差异和不一致,因此不鼓励使用。

当您有这样的问题时,通常应该直接到规范源代码中查找。在这种情况下,JavaScript的规范源代码是EMCAScript规范。

相关章节为:

http://www.ecma-international.org/ecma-262/6.0/#sec-日期分析

它指出:

日期分析(字符串)

[…]

函数首先尝试根据日期-时间字符串格式(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