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