2014-04-08 69 views
0

我正在学习使用JavaScript中的Date对象。试图计算现在和某个设定日期之间的差异,但它会返回比inteded更大的值。该codepen是here,我似乎无法确定我做错了什么...帮助?日期差异比预期的大

var setdate = new Date(2014, 4, 27, 14,30); //27th of April this year at 14:30 
var now = new Date(); //Now, whenever this code runs 
var diff = Math.round((setdate.getTime() - now.getTime())/1000); //Difference in seconds 

function NiceTimer(delta) { //Decompose the difference in seconds into date units. 

    this.days = Math.floor(delta/ 86400); 
    delta -= this.days*86400; //Subtract the value once it has been "extracted". 

    this.hours = Math.floor(delta/ 3600); 
    delta -= this.hours*3600; 

    this.minutes = Math.floor(delta/ 60); 
    delta -= this.minutes*60; 

    this.seconds = delta; 

    this.printString = function() { 
    return "The event starts in "+this.days+" days, "+this.hours+" hours, "+this.minutes+" minutes and "+this.seconds+" seconds"; //Output a readable countdown string 
    } 
} 

var timer = new NiceTimer(diff); 

var el = document.getElementById("timer"); 
el.innerHTML = timer.printString(); 
+0

请将有问题的代码发布在StackOverflow上,而不是其他地方。如果太长,则将其缩短到相关部分。 – Bergi

回答

5
var setdate = new Date(2014, 4, 27, 14,30); //27th of April this year at 14:30 

更改四三,个月索引从零开始。

var setdate = new Date(2014, 3, 27, 14,30); 

Date @ MDN:代表月份,以0开头的1月至11十二月

整数值。

+0

阿哈哈srsly? WTF ...就像......完全不合逻辑的。谢谢! – Megakoresh