无效的字符串被转换为日期

时间:2018-11-02 10:54:11

标签: javascript datetime

嗨,我有一个字符串“ Windows-10”,当我尝试通过新的Date()构造函数进行解析时,它将被解析并给出一个完全有效的日期,例如“ Mon Oct 01 2001 00:00:00 GMT + 0530(印度标准时间)'

我不知道为什么会这样,我还尝试了其他Windows字符串(例如“ Windows-7”,“ Windows-99”等),它们都很容易解析。

1 个答案:

答案 0 :(得分:1)

您见证的行为是特定于实现的,对于{arg1} arg的一个参数,该行为由ECMA-26220.3.2.2规范涵盖。您的示例将转到步骤3.b.ii.1。其中指出将根据Date(value)方法的第20.3.3.2章中列出的规则来解析字符串。该方法规范定义:

  

该函数首先尝试根据日期时间字符串格式(20.3.1.16)中调用的规则(包括扩展的年份)解析字符串的格式。如果字符串不符合该格式,则该函数可能会退回到任何特定于实现的启发式或特定于实现的日期格式。无法识别的字符串或包含字符串格式的非法元素值的日期将导致 Date.parse(string) 返回 NaN

因为您的字符串显然不符合日期时间字符串格式,所以浏览器将退回到其特定于实现的算法。例如,我的Chrome 70在当前时间返回一个Date.parse对象,该对象对应于调用无参数Date构造函数。 IE11另一方面将字符串解析为Date(),并返回带有“无效日期” 值的Date对象。