Roc*_*dra 7 javascript datetime parsing
如果我尝试使用以下语法解析日期:
var date1 = new Date(Date.parse('2013' + '/' + '02' + '/' + '29'));
Run Code Online (Sandbox Code Playgroud)
它将于2013年3月1日返回.
var date1 = new Date(Date.parse('2013' + '/' + '02' + '/' + '30'));
Run Code Online (Sandbox Code Playgroud)
它将于2013年3月2日返回.但如果我这样做
var date1 = new Date(Date.parse('2013' + '/' + '02' + '/' + '33'));
Run Code Online (Sandbox Code Playgroud)
它会回来Invalid Date.
我的观点是,为什么不是所有这些日期都归还Invalid Date?
正确解析所需的唯一格式Date.parse是 ISO 8601 的简化。您可以在ecma 规范中阅读有关确切格式的更多详细信息。
任何其他识别Date.parse为日期的格式都是特定于实现的。您提到的格式不是上述标准的一部分,因此每个实现都可以给出它们想要的任何结果。
碰巧的是,当你传入看起来像一个月中的某一天大于 31 的内容时,解析器会认为它是无效字符串,因此它将返回NaN. 由于月日不规则、闰年、缺失秒、时区等各种问题,检查日期是否有效要困难得多,因此不需要将所有这些逻辑放入解析器中。由于日期显然有效,它会被转换为时间戳并由 new Date() 返回,Date.parse此时 new Date() 可以使用。
结论是使用非标准格式Date.parse是不可靠的,应该尽可能避免。
| 归档时间: |
|
| 查看次数: |
439 次 |
| 最近记录: |