Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在javascript 24小时倒计时中使用所需的时区,或偏移倒计时,使其在当地时间11:00而不是00:00达到00:00_Javascript_Loops_Time_Timer_Clock - Fatal编程技术网

在javascript 24小时倒计时中使用所需的时区,或偏移倒计时,使其在当地时间11:00而不是00:00达到00:00

在javascript 24小时倒计时中使用所需的时区,或偏移倒计时,使其在当地时间11:00而不是00:00达到00:00,javascript,loops,time,timer,clock,Javascript,Loops,Time,Timer,Clock,我有这个24小时循环倒计时,我需要它在每天11:00重置,而不是像现在那样在00:00重置,现在它使用本地时区,所以要么改变它使用的时区,要么改变它使用的时间11小时 我要做的下一件事是对它进行格式化,这样当小时和分钟达到一位数时,它将在这个数字之前用零进行格式化,所以05:02:55而不是像现在这样的5:2:55。 有人能帮我吗?蒂纳克斯 下面是脚本: 笔在这里: 要忽略用户的时区,您需要使用UTC版本的日期。请记住,设置的滚动时间也是UTC 即使在夏令时更改期间,为了获得准确的日持续时间,您

我有这个24小时循环倒计时,我需要它在每天11:00重置,而不是像现在那样在00:00重置,现在它使用本地时区,所以要么改变它使用的时区,要么改变它使用的时间11小时

我要做的下一件事是对它进行格式化,这样当小时和分钟达到一位数时,它将在这个数字之前用零进行格式化,所以05:02:55而不是像现在这样的5:2:55。 有人能帮我吗?蒂纳克斯

下面是脚本:

笔在这里:


要忽略用户的时区,您需要使用UTC版本的日期。请记住,设置的滚动时间也是UTC

即使在夏令时更改期间,为了获得准确的日持续时间,您也应该坚持使用日期算法

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();
d2是计数器将翻转的日期。相应地调整


作为奖励,这会反复调用setInterval,以便倒计时与挂钟同时进行。

作为注释:您可以将jQuery语句重写为document.querySelector'the-final-countdown p'。innerHTML=hours+':'+min+':'+sec;。它可能看起来稍微长一点,但是,通过避免jQuery调用,它将节省几十步而不是几百步。jQuery对解释一条简单语句的解释非常冗长。而且,你可以零填充你的分和秒,为什么不加小时呢?这样:min='0'+min.slice-2;秒=0'+秒切片-2;。这也将修复你的代码中的一个bug,该bug在你的分钟内测试长度为10。在codepen中,他在分钟和秒的长度均为=1,因此我认为这只是问题中的一个输入错误。感谢修复了格式设置,现在我只需要抵消它达到0的时间,仍然不知道这是最优雅的,但是你可以做一些像ifd.getHours这样的事情
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();