Javascript日期差异错误?

dis*_*cer 8 javascript date

编辑:这不是马丁指出的错误.我只是穿越夏令时,因此1小时差异.

我想计算"2010年3月29日"和"2010年3月9日"之间的天数差异,所以我有以下代码:

((new Date(2010, 2, 29)).getTime() - (new Date(2010, 2, 8)).getTime()) / 86400000
Run Code Online (Sandbox Code Playgroud)

86400000是一天中的毫秒数,并且以毫秒为单位返回日期之间的差异,因此这应该有效.只是它并不完全.我明白了

20.958333333333332
Run Code Online (Sandbox Code Playgroud)

这两个日期之间的差异是错误的.它应该是1814400000(21天86400000),但实际上是1810800000.

此外,如果我改变差异:

((new Date(2010, 2, 28)).getTime() - (new Date(2010, 2, 7)).getTime()) / 86400000
Run Code Online (Sandbox Code Playgroud)

相同的差异,只有一天回来,我得到正常的结果.

只有当我们试图得到(xy)x在2010年3月29日之后且y在2010年3月29日之前时,才会发生这种情况.

我在Mac上的Safari 4和Firefox 3.6以及Windows 7上的IE 8中得到了这个.没有尝试过其他浏览器.

我做错了什么或这是一个已知的错误?

Mar*_*tin 11

你正在穿越夏令时边界,因此有1小时的差异.