如何让这个倒计时工作为周一,周二和其他时间

How To Make This Countdown Work For Monday, Tuesday and others

本文关键字:周一 周二 时间 其他 工作 倒计时      更新时间:2023-09-26

在这篇文章中,有人(royhowie)分享了一个每周日都会计算的js。这段代码运行得很好,但当我试图通过将delta值从7更改为2或1来使它在今天(当前日期)之后的几天(如星期二、星期一)运行时,这会显示Timer's Finished。如何使其发挥作用?

var getNextSunday = function () {
    var today = new Date(),
        day = today.getDay(),	// 1 for Mon, 2 for Tue, 3 for Wed, etc.
        delta = 7 - day;
    var sunday = new Date(today.getTime() + (delta * 24 * 3600 * 1000));
    sunday.setHours(11);
    sunday.setMinutes(15);
    sunday.setSeconds(0);
    return sunday;
}
var t = getNextSunday(),
    p = document.getElementById("time"),
    timer;
var u = function () {
    var delta = t - new Date(),
        d = delta / (24 * 3600 * 1000) | 0,
        h = (delta %= 24 * 3600 * 1000) / (3600 * 1000) | 0,
        m = (delta %= 3600 * 1000) / (60 * 1000) | 0,
        s = (delta %= 60 * 1000) / 1000 | 0;
    
    if (delta < 0) {
        clearInterval(timer);
        p.innerHTML = "timer's finished!";
    } else {
        p.innerHTML = d + "d " + h + "h " + m + "m " + s + "s";
    }
}
timer = setInterval(u, 1000);
<h1 id="time"></h1>

已解决

@退休43绅士,你是天才。非常尊重你。

这不是要更改的数字7,而是分配给天的值:

现有代码:

day = today.getDay(),   // 1 for Mon, 2 for Tue, 3 for Wed, etc.

您想要:

day = 2,    // 1 for Mon, 2 for Tue, 3 for Wed, etc.

只需将delta = 7 - day;更改为

delta = (8 - day) % 7;

解释

星期一的值为1,但这与1+7类似。

计算出8和今天日期之间的差值后,使用模来获得0和6之间的余数。

示例

今天是星期日:(8-0)%7=8%7=1,即离星期一还有一天。

今天是星期一:(8-1)%7=7%7=0,即离星期一还有0天。

这是一个棘手的问题。

与其减少"7",你必须添加到其中:

var getNextWeekday = function (nextDesirefWeekDay) { 
    var today = new Date(), 
    day = today.getDay(),   
    delta = 7 - day + nextDesirefWeekDay;
    ...

}

然后,在下一个desirefWeekDay中,您通过了您想要的一天:

0:周日1:星期一2:星期二…

我希望这能有所帮助。