3

new Date("2")是:

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

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

这是不好的。有没有一种简单的方法来规范Date跨不同平台的类型行为?

谢谢。

编辑

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

4

1 回答 1

4

不,ECMAScript 规范声明单参数Date构造函数(该参数是一个字符串)将遵循Date.parse“依赖于实现”的构造函数。来源:ECMAScript 规范

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

如果对于您的应用程序,字符串"2"作为日期的公认含义,那么您应该实现自己的逻辑来解释它。这没有“标准”含义。如果你有一些更容易被世界识别的东西作为你的字符串,你会发现不同的实现表现得更相似。但是在您的情况下,建议您自己解析字符串并明确地将 的含义提供2Date.

于 2012-09-03T18:00:02.897 回答