Skip to content

Instantly share code, notes, and snippets.

@shisaq
Last active February 1, 2017 13:37
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save shisaq/1f62d8439771f494fc0730b327438042 to your computer and use it in GitHub Desktop.
Save shisaq/1f62d8439771f494fc0730b327438042 to your computer and use it in GitHub Desktop.
a simple count down core code
var deadline = "Thu, Feb 22 2017 23:59:59 GMT-0500";
// get the time remaining
function getTimeRemaining(endtime) {
var t = Date.parse(endtime) - Date.parse(new Date());
var seconds = (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));
return {
'total': t,
'days': days,
'hours': hours,
'minutes': minutes,
'seconds': seconds
};
}
// initialize clock
function initializeClock(id, endtime) {
var clock = document.getElementById(id);
var daysSpan = clock.querySelector('.days');
var hoursSpan = clock.querySelector('.hours');
var minutesSpan = clock.querySelector('.minutes');
var secondsSpan = clock.querySelector('.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);
daysSpan.innerHTML = 0;
hoursSpan.innerHTML = 0;
minutesSpan.innerHTML = 0;
secondsSpan.innerHTML = 0;
}
}
updateClock();
var timeinterval = setInterval(updateClock, 1000);
}
// var deadline = new Date(Date.parse(new Date()) + 97 * 24 * 60 * 60 * 1000);
initializeClock('clockdiv', deadline);
@ilogixdev
Copy link

ilogixdev commented Feb 1, 2017

This code is not working in MAC safari....
The code i have used with my custom requirement
This Code works perfectly for mozilla and Crome...

$('#redirect_url').removeAttr('href');
        var vis = (function(){
            var stateKey, eventKey, keys = {
                hidden: "visibilitychange",
                webkitHidden: "webkitvisibilitychange",
                mozHidden: "mozvisibilitychange",
                msHidden: "msvisibilitychange"
            };
            for (stateKey in keys) {
                if (stateKey in document) {
                    eventKey = keys[stateKey];
                    break;
                }
            }
            return function(c) {
                if (c) document.addEventListener(eventKey, c);
                return !document[stateKey];
            }
        })();

        function getTimeRemaining(endtime) {
            var t = endtime - 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);
            return {
                'total': t,
                'hours': hours,
                'minutes': minutes,
                'seconds': seconds
            };
        }

        function initializeClock(id, endtime) {
            var clock = document.getElementById(id);
            var hoursSpan = clock.querySelector('.hours');
            var minutesSpan = clock.querySelector('.minutes');
            var secondsSpan = clock.querySelector('.seconds');
            var isPaused = true;

            vis(function(){
                document.title = vis() ? 'Visible' : 'Not visible';
                isPaused = vis() ? true : false;
            });

            function updateClock() {
                var t = getTimeRemaining(endtime);

                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);
                    $.ajax({
                        url: '/myURLtoSave',
                        method: 'post',
                        data: {'rewardId': '<?php echo $video->getId(); ?>', 'page_url': '<?php echo $currentPage; ?>'},
                        response: function (result) {
                            console.log(result);
                        }
                    });
                    $('#redirect_url').attr("href", "<?php echo $pageUrl; ?>");
                    document.getElementById('redirect_url').click();
                }
            }

            updateClock();
            //var timeinterval = setInterval(updateClock, 1000);
            var timeinterval = setInterval(function(){
                if(isPaused) {
                    updateClock();
                } else {
                    //endtime = new Date(Date.parse(new Date(endtime)) + 1000);
                    //endtime = new Date(Date.parse(endtime) + 1000);
                    endtime = Date.parse(endtime) - Date.parse(new Date());
                }
            }, 1000);
        }

        var deadline = new Date(Date.parse(new Date()) + <?php echo $video->getCountdown(); ?> * 1000);
        initializeClock('clockdiv', deadline);

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment