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

时间:2017-04-13 23:18:07

标签: javascript loops time timer clock

我有24小时循环倒计时,我需要它在每天11:00重置,而不是像现在一样在00:00重置,现在它使用本地时区,所以要么必须更改它使用的时区或时间到11个小时。

我需要做的下一个方法就是格式化它,这样当小时和分钟达到一位数值时,它会在nuber之前形成零,所以05:02:55而不是5:2:55就像现在。 有人能帮我吗? Thnaks

继承剧本:

在这里写字:http://codepen.io/anon/pen/bWGRoa

setInterval(function time(){
  var d = new Date();
  var hours = 23 - d.getHours();
  var min = 60 - d.getMinutes();
  if((min + '').length == 10){
    min = '0' + min;
  }
  var sec = 60 - d.getSeconds();
  if((sec + '').length == 1){
        sec = '0' + sec;
  }
  jQuery('#the-final-countdown p').html(hours+':'+min+':'+sec)
}, 1000);

1 个答案:

答案 0 :(得分:1)

要忽略用户的时区,您需要使用UTC版Date。请记住,您为翻转设置的时间也是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是计数器翻转的Date。相应调整。

作为奖励,这会反复拨打setInterval(),以便倒计时与挂钟同时进行。