【发布时间】:2017-09-10 05:10:59
【问题描述】:
我有这个 24 小时循环倒计时,我需要它在每天 11:00 重置,而不是像现在这样在 00:00 重置,现在它使用本地时区,所以要么必须更改它使用的时区或按 11 小时计算。
我需要做的下一个事情是格式化它,这样当小时和分钟达到一位数字值时,它将在那个 nuber 之前用零格式化,所以 05:02:55 而不是 5:2:55 之类的现在。 有人能帮我吗?谢谢
脚本如下:
在这里写: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);
【问题讨论】:
-
就像注释一样:您可以将
jQuery语句重写为document.querySelector('#the-final-countdown p').innerHTML=hours+':'+min+':'+sec;。它可能看起来稍长一些,但是,通过避免 jQuery 调用,它将节省几十而不是几百步。 jQuery 对于解释简单语句非常啰嗦。 -
另外,您可以通过这种方式将分钟和秒(为什么不使用小时?)归零:
min=('0'+min).slice(-2);和sec=('0'+sec).slice(-2);。这也将修复您的代码中的一个错误,该错误会为您的分钟测试长度为 10。 -
在codepen中,他的分分和秒分都有
length == 1,所以我认为这只是问题中的一个错字。 -
感谢修复了格式,现在我只需要抵消它达到0的时间,仍然不知道如何
-
不是最优雅的,但您可以执行
if(d.getHours() <= 22){ hours = 22 - d.getHours(); }else{ hours = 24 - d.getHours(); }之类的操作。没有测试第二部分
标签: javascript loops time timer clock