2017-08-03 48 views
0

我有一個代表日期的字符串。我把它變成日期對象,並提前一個月計算另一個日期。然後我想計算它們之間的差異,但我不知道爲什麼兩者相同,最終的迴避總是爲零。我該怎麼做?Javascript - 從另一個生成日期並計算它們之間的天數

 var dateString = '2017-08-03'; 
 
     var dateFrom = new Date(dateString); 
 
\t \t console.log(dateFrom); //Thu Aug 03 2017 02:00:00 GMT+0200 (CEST) 
 
\t \t var dateTo = new Date(dateFrom.setMonth(dateFrom.getMonth()+1)); 
 

 
\t \t console.log(dateTo); //Sun Sep 03 2017 02:00:00 GMT+0200 (CEST) (one month later) 
 

 
\t \t console.log(dateFrom); //Sun Sep 03 2017 02:00:00 GMT+0200 (CEST)// (two dates turn into the same) 
 
\t \t var difference = Math.floor((dateTo - dateFrom)/86400000); // 0 
 
\t \t

+0

的[我如何獲得天在JavaScript中兩個日期之間有多少?(可能的複製https://stackoverflow.com/questions/542938/how-do-i-get-the-number-日期之間的日期在JavaScript中) –

+0

'Math.floor'應該是'Math.round'。在觀察夏令時,每年一天少於24小時。答案將始終是開始月份的天數,請參閱[*使用javascript確定一個月內的天數的最佳方式是什麼?](https://stackoverflow.com/questions/315760/what -is最最好的方式對確定-的用戶號碼的天-IN-A-月與JavaScript的) – RobG

回答

0

正在發生,因爲在var dateTo = new Date(dateFrom.setMonth(dateFrom.getMonth()+1))你實際上是通過設置改變dateFrom是一個月到下個月。你可以做這樣的事情。

var dateString = '2017-08-03' 
 
    var dateFrom = new Date(dateString); 
 
    console.log(dateFrom); //Thu Aug 03 2017 02:00:00 GMT+0200 (CEST) 
 
    var dateTo = new Date(dateString); 
 
    dateTo = new Date(dateTo.setMonth(dateTo.getMonth()+1)); 
 

 
    console.log(dateTo); //Sun Sep 03 2017 02:00:00 GMT+0200 (CEST) (one month later) 
 

 
    console.log(dateFrom); //Sun Sep 03 2017 02:00:00 GMT+0200 (CEST)// (two dates turn into the same) 
 
    var difference = Math.floor((dateTo - dateFrom)/86400000); // 0

0

,但我不知道爲什麼都成爲相同,最終結果始終爲零。

的答案是低於線

dateFrom.setMonth(dateFrom.getMonth()+1) 

您正在嘗試設置從日期的月份一個月,然後使用該更新的日期要創建新的日期。如果你實現願望的結果,你可以使用下面的腳本。

var dateString = '2017-08-03'; 
var dateFrom = new Date(dateString); 
console.log(dateFrom); //Thu Aug 03 2017 02:00:00 GMT+0200 (CEST) 
var dateTo = new Date(dateFrom); //ADDED 
dateTo = dateTo.setMonth(dateFrom.getMonth()+1) //Updated 
var difference = Math.floor((dateTo - dateFrom)/86400000); 
相關問題