JSFiddle - React, Tailwind, and code Playground

by Drath

HTML

<div id="dday"></div>
<div id="dhour"></div>
<div id="dmin"></div>
<div id="dsec"></div>

JavaScript

var year = 2012;
var month = 12;
var day = 31;
var hour = 18;
var minute = 38;
var tz = -6; //SASK
var montharray = new Array("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec");

function countdown(yr, m, d, hr, min) {
    theyear = yr;
    themonth = m;
    theday = d;
    thehour = hr;
    theminute = min;
    var today = new Date();
    var todayy = today.getYear();
    if (todayy < 1000) {
        todayy += 1900;
    }
    var todaym = today.getMonth();
    var todayd = today.getDate();
    var todayh = today.getHours();
    var todaymin = today.getMinutes();
    var todaysec = today.getSeconds();
    var todaystring1 = montharray[todaym] + " " + todayd + ", " + todayy + " " + todayh + ":" + todaymin + ":" + todaysec;
    var todaystring = Date.parse(todaystring1) + (tz * 1000 * 60 * 60);
    var futurestring1 = (montharray[m - 1] + " " + d + ", " + yr + " " + hr + ":" + min);
    var futurestring = Date.parse(futurestring1) - (today.getTimezoneOffset() * (1000 * 60));
    var dd = futurestring - todaystring;
    var dday = Math.floor(dd / (60 * 60 * 1000 * 24) * 1);
    var dhour = Math.floor((dd % (60 * 60 * 1000 * 24)) / (60 * 60 * 1000) * 1);
    var dmin = Math.floor(((dd % (60 * 60 * 1000 * 24)) % (60 * 60 * 1000)) / (60 * 1000) * 1);
    var dsec = Math.floor((((dd % (60 * 60 * 1000 * 24)) % (60 * 60 * 1000)) % (60 * 1000)) / 1000 * 1);
    if (dday <= 0 && dhour <= 0 && dmin <= 0 && dsec <= 0) {
        //Do something crazy when it counts down to 0
        alert("DONE!");        
        return;
    } else {
        document.getElementById('dday').innerHTML = dday;
        document.getElementById('dhour').innerHTML = dhour;
        document.getElementById('dmin').innerHTML = dmin;
        document.getElementById('dsec').innerHTML = dsec;
        setTimeout(function() { countdown(theyear,themonth,theday,thehour,theminute) }, 1000);
    }
}

countdown(year, month, day, hour, minute);