我正在尝试创建一个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);
}
非常感谢任何帮助!提前谢谢。
答案 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;