每周重复倒计时计时器



我正在尝试设置一个倒计时计时器,它每周在太平洋标准时间每周四晚上8点重复,但我现在的计时器只在每周五午夜重复。我试过改变一些变量,但似乎并没有改变整个时间。

function CountDown(id, day, time) {
function update() {
// Get current date and time
var today = new Date();
// Get number of days to Friday
var dayNum = today.getDay();
var daysToFri = day - (dayNum < day ? dayNum : dayNum - 7);
// Get milliseconds to noon friday
var fridayNoon = new Date(+today);
fridayNoon.setDate(fridayNoon.getDate() + daysToFri);
fridayNoon.setHours(
time.split(':')[0],
time.split(':')[1],
time.split(':')[2],
time.split(':')[3]
);
// Round up ms remaining so seconds remaining matches clock
var ms = Math.ceil((fridayNoon - today) / 1000) * 1000;
var d = ms / 8.64e7 | 0;
var h = (ms % 8.64e7) / 3.6e6 | 0;
var m = (ms % 3.6e6) / 6e4 | 0;
var s = (ms % 6e4) / 1e3 | 0;
// Display the result in the element with id="demo"
// document.getElementById(id).innerHTML = d   , h  , m  , s ;style='display:flex; flex-direction:column;'
// document.getElementById(id).innerHTML = h;
d = d<10? "0"+d: d;
h = h<10? "0"+h: h;
m = m<10? "0"+m: m;
s = s<10? "0"+s: s;
document.getElementById(id).innerHTML =  "<div class='clabel'> <p class='countertext'> DAYS </p><h1 class='cnumber days' > "+  d +"</h1></div>" + "<div class='clabel'> <p class='countertext'>HOURS</p><h1 class='cnumber hours'>"+ h +"</h1></div>" + "<div class='clabel'> <P class='countertext'>MINUTES</P><h1 class='cnumber'>"+ m +"</h1></div>"  + "<div class='clabel'><P class='countertext'>SECONDS</p><h1 class='cnumber'>"+ s +"</h1></div>";
// document.getElementById(id).innerHTML =  "<span  class='c-name'><strong>DAYS</strong></span> " + "<h1 style='font-size:10rem; '>"+ d +"</h1>" + "<span  class='c-name'> <strong>HOURS</strong></span> "
// + "<h1 style='font-size:10rem;'>"+ h +"</h1>" + "<span class='c-name'> <strong>MINUTES</strong></span> " + "<h1 style='font-size:10rem;'>"+ m +"</h1>" +"<span class='c-name'> <strong>SECONDS</strong></span> " + "<h1 style='font-size:10rem;'>"+ s +"</h1>";
}
// Run update just after next full second
function runUpdate() {
update();
setTimeout(runUpdate, 1020 - (Date.now() % 1000));
}
runUpdate();

}

看看这个答案:JS倒计时,它可以在每周的特定日期和时间重置

为方便起见,请复制下面的解决方案代码。

var curday;
var secTime;
var ticker;

function getSeconds() {
var nowDate = new Date();
var dy = 4 ; //Sunday through Saturday, 0 to 6
var countertime = new Date(nowDate.getFullYear(),nowDate.getMonth(),nowDate.getDate(),20,30,0); //20 out of 24 hours = 8pm

var curtime = nowDate.getTime(); //current time
var atime = countertime.getTime(); //countdown time
var diff = parseInt((atime - curtime)/1000);
if (diff > 0) { curday = dy - nowDate.getDay() }
else { curday = dy - nowDate.getDay() -1 } //after countdown time
if (curday < 0) { curday += 7; } //already after countdown time, switch to next week
if (diff <= 0) { diff += (86400 * 7) }
startTimer (diff);
}

function startTimer(secs) {
secTime = parseInt(secs);
ticker = setInterval("tick()",1000);
tick(); //initial count display
}

function tick() {
var secs = secTime;
if (secs>0) {
secTime--;
}
else {
clearInterval(ticker);
getSeconds(); //start over
}

最新更新