Countdown timer

by Scott Currell

HTML

<div id="js-clockdiv">
    Days: <span class="js-days"></span><br>
    Hours: <span class="js-hours"></span><br>
    Minutes: <span class="js-minutes"></span><br>
    Seconds: <span class="js-seconds"></span>
</div>

JavaScript

function getTimeRemaining(endtime) {
  var _total   = Date.parse(endtime) - Date.parse(new Date());
  // convert times to usable format
  var _seconds = Math.floor((_total / 1000) % 60); // milliseconds to seconds
  var _minutes = Math.floor((_total / 1000 / 60) % 60);
  var _hours 	 = Math.floor((_total / 1000 / 60 / 60) % 24);
  var _days 	 = Math.floor((_total / 1000 / 60 / 60 / 24) % 365);
  
  return {
    'total'		: _total,
    'days'		: _days,
    'hours'		: _hours,
    'minutes' : _minutes,
    'seconds' : _seconds
  };
}

function initializeClock(id, endtime) {
  var clock 			= document.getElementById(id);
  var daysSpan 		= clock.querySelector('.js-days');
  var hoursSpan 	= clock.querySelector('.js-hours');
  var minutesSpan = clock.querySelector('.js-minutes');
  var secondsSpan = clock.querySelector('.js-seconds');
  
	function updateClock() {
  	var _t = getTimeRemaining(endtime);
  
    daysSpan.innerHTML 		= _t.days;
    hoursSpan.innerHTML 	= ('0' + _t.hours).slice(-2);
    minutesSpan.innerHTML = ('0' + _t.minutes).slice(-2);
    secondsSpan.innerHTML = ('0' + _t.seconds).slice(-2);
    
    if(_t.total <= 0) {
      clearInterval(timeinterval);
    }
  }
  
  updateClock();
  var timeinterval = setInterval(updateClock,1000);
}

// var deadline = 'October 13 2017 16:00:00 GMT-0600';
var deadline = new Date(Date.parse(new Date()) + 14 * 24 * 60 * 60 * 1000);
initializeClock('js-clockdiv', deadline);