Joe W
Joe W

Reputation: 259

Javascript Countdown timer does not work

I came across this codepen https://codepen.io/donovanh/pen/JWdyEm, and I was trying to apply it to an older countdown timer I did because this one seemed better.. If I set the countdown date to today then it still says there is 30 days left.

Here is the code where it calculates the difference between dates.

function daysBetween( date1, date2 ) {
  //Get 1 day in milliseconds
  var one_day=1000*60*60*24;

  // Convert both dates to milliseconds
  var date1_ms = date1.getTime();
  var date2_ms = date2.getTime();

  // Calculate the difference in milliseconds
  var difference_ms = date2_ms - date1_ms;

  // Convert back to days and return
  return Math.round(difference_ms/one_day); 
}

console.log("Days to end of April = " +
  daysBetween(new Date(), new Date("2018-04-30")));

I cannot figure out where the extra days are coming from, any help would be appreciated, thanks

Upvotes: 1

Views: 73

Answers (2)

Andrzej Smyk
Andrzej Smyk

Reputation: 1724

I think that your problem comes from giving wrong month number as argument to Date.UTC. According to docs https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/UTC, month is a 0-11 number. If you would like to call function for todays date, you have to call it like new Date(2018, 3, 10, 12, 15).

Upvotes: 1

Cristian Tr
Cristian Tr

Reputation: 716

Months start from 0 and go to 11.

The end of April is Date("2018-03-30"), not Date("2018-04-30") that is why you get extra 30 or 31 days

Upvotes: 1

Related Questions