Megakoresh
Megakoresh

Reputation: 826

Date difference larger than intended

I am learning to use Date object in Javascript. Tried to calculate difference between now and some set date, but it returns a much larger value than inteded. The codepen is here, I can't seem to figure what I did wrong... Help?

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();

Upvotes: 0

Views: 34

Answers (1)

Mr. Polywhirl
Mr. Polywhirl

Reputation: 48743

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

Change the four to a three, months start at index zero.

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

Date @ MDN:

month Integer value representing the month, beginning with 0 for January to 11 for December.

Upvotes: 5

Related Questions