2017-08-07 167 views
0

這是我試過的。我得到21這肯定是不對的。我究竟做錯了什麼?如何計算未來某個特定日期與今天之間的天數?

var today = new Date(); 
var TrumpsStateVisit = new Date('March 12, 2018 12:00:00'); 
var daysTillTrumpsStateVisit = TrumpsStateVisit.getTime() - today.getTime(); 
daysTillTrumpsStateVisit = (daysTillTrumpsStateVisit/864000000); //number of milleseconds in a day 

var $countDownTillTrumpsChinaTrip = ('#countDownTillTrumpsChinaTrip'); 
$countDownTillTrumpsChinaTrip.textContent = Math.floor(daysTillTrumpsStateVisit); 
+2

'86400000'應該有5個零;) – ixpl0

+0

可能是[*如何獲得JavaScript中兩個日期之間的天數?*]的重複(https://stackoverflow.com/questions/542938/how -do-i-get-the-days-between-dates-in-javascript) – RobG

回答

0

你是所以關閉!

主要問題是一天中沒有864000000毫秒,只有86400000;你有一個零太多。

夏令時出現次要問題;不是天天有它究竟是24小時,所以你需要輪結果,而不是地板它:

var today = new Date(); 
 
var TrumpsStateVisit = new Date('March 12, 2018 12:00:00'); 
 
var daysTillTrumpsStateVisit = TrumpsStateVisit.getTime() - today.getTime(); 
 
daysTillTrumpsStateVisit = (daysTillTrumpsStateVisit/86400000); //number of milleseconds in a day 
 

 
console.log(Math.round(daysTillTrumpsStateVisit));

希望這有助於! :)

+0

一天中並不總是24小時(夏時制可以觀察到),所以結果應該舍入,而不是地板。 – RobG

+0

@RobG - 沒錯,我已經忘記了這件事;感謝您指出!我已經更新了我的答案以涵蓋此:) –

0

這不起作用的主要原因是一天中的毫秒數是100 * 60 * 60 * 24 = 86400000。你也應該建立不同的日期,因爲這將是2018年3月12日12:00在用戶瀏覽器的任何時區,其中可能不是你想要的。

但是,在減去日期時,會出現許多與時間更改和其他問題相關的解決問題,因此您應該真正使用專門處理日期和時間的庫,如https://momentjs.com/