在this post某人(royhowie)分享了一个对每个星期日都很重要的js。这段代码效果很好,但是当我尝试使它工作超过今天(当天),如星期二,星期一,通过将delta值从7更改为2或1,这个节目计时器已完成。如何使它工作?
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);
&#13;
<h1 id="time"></h1>
&#13;
@ Reti43绅士你才是天才。很尊重你。
答案 0 :(得分:1)
它不是您想要更改的数字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.
答案 1 :(得分:0)
只需将delta = 7 - day;
更改为
delta = (8 - day) % 7;
<强>解释强>
星期一的值为1,但这与1 + 7类似。
在计算8和今天的日期之间的差异后,使用模数得到0到6之间的余数。
示例强>
今天是星期天:(8 - 0)%7 = 8%7 = 1,即星期一是1天。
今天是星期一:(8 - 1)%7 = 7%7 = 0,即星期一是0天。
答案 2 :(得分:0)
这是一个棘手的问题。
而不是减少“7”,你必须添加它:
var getNextWeekday = function (nextDesirefWeekDay) {
var today = new Date(),
day = today.getDay(),
delta = 7 - day + nextDesirefWeekDay;
...
}
然后,在nextDesirefWeekDay中,你通过了你想要的一天:
0:星期天 1:星期一 2:星期二 ...
我希望有所帮助。