你能用“-"而不是“/"使用JavaScript短日期格式
can you use "-" instead of "/"with JavaScript Short Date format
在W3Schools上,他们显示输入带有"/"的短日期格式,如下所示,CCD_ 1。我试着用"-"替换"/",如下所示,CCD_ 2,这也起到了作用。然而,在浏览该网站时,我发现这并不是一个有效的替代方案。
是吗?尽管它有效,但我有什么理由不使用它而使用正斜杠吗?
如果您尝试在Firefox中使用new Date("03-25-2015")
,您将收到一条"无效日期"消息。因此,本质上,使用破折号并不能在所有浏览器中都起作用。最好坚持使用前斜线(/
)。
new Date("03.25.2015")
在Firefox中无效,但在Chrome中无效。
根据ES5规范,当Date
构造函数传递字符串时,它将使用与Date.parse
相同的逻辑:
- 设v为ToPrimitive(值)
- 如果Type(v)为String,则
a。以与解析方法完全相同的方式将v解析为日期(15.9.4.2);设V为该日期的时间值。
Date.parse
首先使用日期-时间字符串格式,其次使用特定于实现的启发式方法:
函数首先尝试根据日期-时间字符串格式(15.9.1.15)中调用的规则解析字符串的格式。如果字符串不符合该格式,则函数可能会返回到任何特定于实现的启发式方法或特定于实施的日期格式。
日期时间字符串格式为YYYY-MM-DDTHH:mm:ss.sssZ
。new Date("03/25/2015")
0、YYYY-MM
和YYYY-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
- 可以<脚本类型=“;text/javascript”>window.location=“/"</
- Javascript复选框函数:;缺少:在属性id之后"
- 图像可以从源<img src=""/>.TEXT可以在没有javascript的情况下从外部
- CKEditor如何允许href="javascript:void(0)"在小部件中
- 插入“;img src"在javascript中
- "访问控制允许起源”;通过javascript从http页面调用同一网站的httpsurl时出现问题
- 尝试使用Javascript正则表达式来获取“&"分隔文本,无论它是否's是最后一个值
- 如何's css标记"-webkit最小设备像素比”;在Javascript中实现
- 内联javascript与"<脚本>"字符串错误地关闭了脚本标记
- 什么是"!函数(){}〃;javascript中的mean/do
- 使用javascript"这个“;用于jquery选择器
- 我可以在不使用乘法运算符“”的情况下进行乘法运算吗*"在JavaScript中
- 用分隔符分隔具有多个整数值的字符串的Javascript"重试错误的值
- 什么是==+"在javascript中
- 什么是“;回归"javascript中的mean
- 可以't删除“;C: fakepath "使用javascript替换和regex
- 如何删除“"使用javascript从字符串中提取字符
- 如何使用Javascript获取当前页面URL,并在<a href="[the_URL]”>
- JavaScript异常:“;不成形”;在firefox浏览器上;XMLHttpRequest"chrome浏
- button1.Attributes.Add(“onclick"“javascript: window.open