2014-01-05 79 views
2

我想檢查一個日期表單,我有以下問題:2014-06-30和2014-07-01之間的日期差異是兩天。這裏是我的測試代碼的簡化部分:Javascript日期錯誤在6月31日?

var date1 = (new Date(2012, 06, 30)).getTime(); 
var date2 = (new Date(2012, 07, 01)).getTime(); 
console.log(Math.round((date2-date1)/(1000.0*60*60*24))); 

結果是「2」。只有當我將date1設置爲(2014,06,31)時,它纔會給我1但是你知道6月只有31天! 結果是相同的事件,如果我改變年至2012年,2013 ...

回答

7

個月從0開始爲Date對象的documentation解釋說:

整數值表示的月份,從0開始1月至11月12日。

因此new Date(2012, 06, 30)不像您想象的那樣是六月。這是七月。這就是爲什麼它有31天。

在你的例子中,你正在計算8月1日和7月30日之間的日期差,你的微積分表明是2天。

如果你想計算六月七月1日和30日之間的天差:

var date1 = (new Date(2012, 05, 30)).getTime(); 
var date2 = (new Date(2012, 06, 01)).getTime(); 
console.log(Math.round((date2-date1)/(1000.0*60*60*24))); 
2

new Date(2012, 06, 30),不是六月。

嘗試在你的JavaScript控制檯:

> new Date(2012, 06, 30) 
Mon Jul 30 2012 00:00:00 GMT-0400 (EDT) 
> new Date(2012, 06, 31) 
Tue Jul 31 2012 00:00:00 GMT-0400 (EDT) 
相關問題