Javascript重复倒数计时器到正午

时间:2017-04-29 11:07:49

标签: javascript math timer countdown

我正在尝试创建一个javascript倒计时,显示小时和分钟,每天倒计时到正午。当达到中午时,我希望计时器重置并再次开始倒计时到中午(显然是倒数到第二天)。

我有下面的代码,但是我无法让它正常工作,代码在中午之后工作正常,但是一旦达到午夜,则计数不正确。

这是我的代码:

function ShowTimes() {
    var now = new Date();
    var hrtime = now.getHours()
    var hrs = 23 - hrtime + 12;
    var mins = 59-now.getMinutes();
    var secs = 59-now.getSeconds();
    var str = '';
    str += hrs+' hours '+mins+' minutes';
    document.getElementById('countdown').innerHTML = str;
}

var _cntDown;

function StopTimes() {
    clearInterval(_cntDown);
}

非常感谢任何帮助!提前谢谢。

2 个答案:

答案 0 :(得分:0)

更改Hrs计算的逻辑如下:

if(hrtime>12)
    hrtime=23- hrtime+ 12;
else
    hrtime= 12-hrtime;

答案 1 :(得分:0)

你是否住在春季/秋季向前/向后移动时钟的地方?

如果是这样,那么你的小时和分钟逻辑会失败的那一天会有两天。

这种方式即使在时钟发生变化时也能正常工作:

var now = new Date();
var midday = new Date(now.getFullYear(), now.getMonth(), now.getDate() + (now.getHours() >= 12 ? 1 : 0), 12);
var millisToMidday = midday.getTime() - now.getTime();
var hours = Math.floor((millisToMidday / (60 * 60 * 1000)))
var minutes = Math.floor((millisToMidday / (60 * 1000))) % 60;
var seconds = Math.floor((millisToMidday / (1000))) % 60;