2017-08-07 166 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/