Simple HTML/Javascript countdown

For an internal event inside our company we needed countdown, showing how much time is left until the event starts. Since where are an international company, I had to take care of the different timezones. Here is my simple piece of code, that could be used inside any webpage, without any additional resources or libraries.

[SOME IMPORTANT DATE TITLE]
[Some subtext]

Days
Hours
Minutes
Seconds

<style>
#clockdiv {
	background: #ebd3ce;
	color: #fff;
	display: inline-block;
	font-weight: 100;
	text-align: center;
	font-size: 20px;
	padding: 5px;
	width: 100%;
	margin-bottom: 20px;
}

#clockdiv > div {
	height: 60px;
	padding: 10px;
	display: inline-block;
}

#clockdiv div > span{
	padding: 10px;
	background: #d13d73;
	display: inline-block;
}

.clockdiv_smalltext {
	padding-top: 5px;
	font-size: 12px;
	color: #000;
}

.clockdiv_title {
	background: #ebd3ce !important;
	font-size: 30px;
	color: #000 !important;
}

</style>

<div id="clockdiv">
  <div class="clockdiv_title">
    <span class="clockdiv_title">REHAU SUMMIT</span>
    <div class="clockdiv_smalltext">Find out more <a href="./tag/rehau2020/">here.</a></div>
  </div>
  <div>
    <span class="clockdiv_days"></span>
    <div class="clockdiv_smalltext">Days</div>
  </div>
  <div>
    <span class="clockdiv_hours"></span>
    <div class="clockdiv_smalltext">Hours</div>
  </div>
  <div>
    <span class="clockdiv_minutes"></span>
    <div class="clockdiv_smalltext">Minutes</div>
  </div>
  <div>
    <span class="clockdiv_seconds"></span>
    <div class="clockdiv_smalltext">Seconds</div>
  </div>
</div>

<script>

function getTimeRemaining(endtime) {
    var t = Date.parse(endtime) - Date.parse(new Date());
    var seconds = Math.floor((t / 1000) % 60);
    var minutes = Math.floor((t / 1000 / 60) % 60);
    var hours = Math.floor((t / (1000 * 60 * 60)) % 24);
    var days = Math.floor(t / (1000 * 60 * 60 * 24));

    if(seconds <= 0) seconds = 0;
    if(minutes <= 0) minutes = 0;
    if(hours <= 0) hours = 0;
    if(days <= 0) days = 0;

    return {
        'total': t,
        'days': days,
        'hours': hours,
        'minutes': minutes,
        'seconds': seconds
    };
}

function initializeClock(id, endtime) {
    var clock = document.getElementById(id);
    var daysSpan = clock.querySelector('.clockdiv_days');
    var hoursSpan = clock.querySelector('.clockdiv_hours');
    var minutesSpan = clock.querySelector('.clockdiv_minutes');
    var secondsSpan = clock.querySelector('.clockdiv_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 = 'April 6 2017 09:00:00 UTC+0100';
initializeClock('clockdiv', deadline);

</script>

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *

The maximum upload file size: 128 MB. You can upload: image, audio, video, document, archive, other. Links to YouTube, Facebook, Twitter and other services inserted in the comment text will be automatically embedded. Drop files here