为什么Date.parse('2012-01-01')和Date.parse('1/1/2012')会返回不同的值?

时间:2012-01-01 08:02:34

标签: javascript parsing date

跨浏览器(Firefox和Chrome)和跨平台(OSX和Linux)验证:

> Date.parse('2012-01-01')
1325376000000
> Date.parse('1/1/2012')
1325394000000

相关: https://github.com/portablemind/compass_agile_enterprise/wiki/Javascript-Date.parse-bug%3F

3 个答案:

答案 0 :(得分:3)

格式2012-01-01被解释为符合ISO 8601,并隐含Z时区(+00,协调世界时)。格式为1/1/2012,如果接受(这取决于实现),则视为本地时间。

要获得更一致的结果,请使用Globalize.js等库。

答案 1 :(得分:1)

如果您将Z添加到最后,这将保证您始终表示UTC。

> Date.parse('2012-01-01')
1325376000000
> Date.parse('1/1/2012')
1325394000000
> Date.parse('1/1/2012 Z')
1325376000000

答案 2 :(得分:0)

我编写了如下代码:

    var a = Date.parse('2012-01-01');
    var b = Date.parse('2012-01-01');
    var c = Date.parse('1/1/2012');

    alert( a + ' - ' + b + ' - ' + c );

结果是,

1325376000000 - 1325376000000 - 1325376000000

我为a和b编写相同代码的原因是,http://www.w3schools.com/jsref/jsref_parse.asp说,Date.parse返回一个毫秒值,这些行之间是否经过了时间。

我正在使用Firefox 9.0.1,结果是正确的。