Javascript 重复倒计时到中午

Javascript repeating countdown timer to midday

我正在尝试创建一个 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);
}

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

更改 Hrs 计算逻辑如下:

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

你住在 spring/autumn 时钟 forwards/backwards 的地方吗?

如果是这样,您一年中将有两天的时间和分钟逻辑会失败。

这里有一种即使时钟发生变化也能正常工作的方法:

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;