简体   繁体   English

24小时倒计时脚本,每天11:00到达00:00

[英]24 hour countdown script that hits 00:00 every day at 11:00

I need a 24 hour countdown on my website that resets every day at 11:00 and after that starts 24 hour cycle again. 我需要在我的网站上进行24小时倒计时,每天在11:00进行重置,之后又重新开始24小时周期。

I don't need this script to control anything, I just need it to be there for visitors to see, so when they visit for example at 10:00 the will see 1 hour left on the clock and live counting down in format: Hours, Minutes, Seconds And I need it to ignore clients time zone. 我不需要此脚本来控制任何内容,我只需要将其放在那里就可以让访问者看到,所以当他们在10:00进行访问时,会看到时钟还剩1小时并以以下格式进行实时倒计时: ,分钟,秒,而我需要它来忽略客户所在的时区。

I found similar answer, but there is 1 hour window and it resets after that, I need it to reset immediately, how can I edit it to meet my requirements? 我找到了类似的答案,但是有一个1小时的窗口,在此之后它会重置,我需要立即重置它,如何编辑它以满足我的要求?

Here's what I found (this count to 21:00 then one hour window and than starts again): 这是我发现的内容(此计数为21:00,然后是一个小时的窗口,然后重新开始):

var date;
var display = document.getElementById('time');

$(document).ready(function() {
    getTime('GMT', function(time){
        date = new Date(time);
    });    
});

setInterval(function() {
    date = new Date(date.getTime() + 1000);

    var currenthours = date.getHours();
    var hours;
    var minutes;
    var seconds;
    if (currenthours != 21){
        if (currenthours < 21) {
            hours = 20 - currenthours;
        } else {
            hours = 21 + (24 - currenthours);
        }
        minutes = 60 - date.getMinutes();
        seconds = 60 - date.getSeconds();

        if (minutes < 10) {
            minutes = '0' + minutes;
        }
        if (seconds < 10) {
            seconds = '0' + seconds;
        }

        display.innerHTML = hours + ':' + minutes + ':' +seconds;
    } else { 
        display.innerHTML = 'LIVE NOW';
    }
}, 1000);

function getTime(zone, success) {
    var url = 'http://json-time.appspot.com/time.json?tz=' + zone,
        ud = 'json' + (+new Date());
    window[ud]= function(o){
        success && success(new Date(o.datetime));
    };
    document.getElementsByTagName('head')[0].appendChild((function(){
        var s = document.createElement('script');
        s.type = 'text/javascript';
        s.src = url + '&callback=' + ud;
        return s;
    })());
}

I guess that 1 hour reset is due to validating hours alone. 我想1小时重置是由于仅验证小时数。 Try the following code: 尝试以下代码:

var date;
var display = document.getElementById('time');

$(document).ready(function() {
    getTime('GMT', function(time){
        date = new Date(time);
    });    
});

setInterval(function() {
    date = new Date(date.getTime() + 1000);

    var currenthours = date.getHours();
    var currentSecs = date.getSeconds();
    var hours;
    var minutes;
    var seconds;
    if (currenthours == 23 && currentsecs == 0){
        display.innerHTML = 'LIVE NOW';
    } else {
        if (currenthours < 23) {
          hours = 22 - currenthours;
        } else {
          hours = 23;
        }
        minutes = 60 - date.getMinutes();
        seconds = 60 - date.getSeconds();

        if (minutes < 10) {
            minutes = '0' + minutes;
        }
        if (seconds < 10) {
            seconds = '0' + seconds;
        }
     display.innerHTML = hours + ':' + minutes + ':' +seconds;
    } 
}, 1000);

To get accurate day duration even during daylight saving time changes you should stick to date arithmetic. 为了即使在夏令时期间也要获得准确的日间持续时间,您应该坚持使用日期算法。

function time() {
    var d1 = new Date();
    var d2 = Date.UTC(d1.getUTCFullYear(),
                      d1.getUTCMonth(),
                      d1.getUTCDate() + (d1.getUTCHours() < 11 ? 0 : 1),
                      11);
    var dh = d2 - d1;
    var hours = Math.floor(dh / 3600000);
    var dm = dh - 3600000 * hours;
    var min = Math.floor(dm / 60000);
    var ds = dm - 60000 * min;
    var sec = Math.floor(ds / 1000);
    var dmilli = ds - 1000 * sec;
    setTimeout(time, dmilli);
    hours = ('0' + hours).slice(-2);
    min = ('0' + min).slice(-2);
    sec = ('0' + sec).slice(-2);
    document.querySelector('#the-final-countdown p').innerHTML = hours + ':' + min + ':' + sec;
}
time();

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM