代码之家  ›  专栏  ›  技术社区  ›  mark

Date类型的标准化javascript实现?

  •  3
  • mark  · 技术社区  · 12 年前

    new Date("2") 是:

    • Chrome上的“2001年2月1日星期四00:00:00 GMT-0500(东部标准时间)”
    • Firefox和IE 9上的“无效日期”
    • node.js上的“2001年2月1日星期四格林尼治标准时间05:00:00”

    由于node.js使用谷歌V8 javascript引擎,Chrome也来自谷歌,我想这是一个谷歌式的调整。

    这太糟糕了。有没有一种简单的方法可以使 Date 跨不同平台键入?

    谢谢

    编辑

    当然,“2”不适合约会。但是,如果使用jQuery验证器插件的“date”方法,那么“2”是一个完全有效的输入,因为这个特定的验证方法将其逻辑推迟到 日期 javascript类型进行实际验证。如果 日期 类型实现是明智的。Chrome(和node.js)中的情况显然并非如此。

    1 回复  |  直到 12 年前
        1
  •  4
  •   David M    12 年前

    否。ECMAScript规范规定单个参数 Date 构造函数,其中该参数是字符串,将遵从 Date.parse 这是“取决于实施的”。资料来源: ECMAScript specification

    因此,如果您希望实现之间有相同的行为,请避免使用此构造函数。

    对于您的应用程序,如果您已识别字符串的含义 "2" 作为一个日期,那么你应该实现自己的逻辑来解释它。这没有“标准”的含义。如果你有一个更容易被全世界识别的字符串,你会发现不同的实现表现得更相似。但在您的情况下,建议您自己解析字符串,并明确提供 2 的更显式构造函数 日期