ブログ投稿で見つけたこのコードと、 http://keith-wood.name/countdown.htmlを使用して繰り返される 24 時間のカウントダウン タイマーがあります。私の使用目的は翌日配達の締め切りなので、締め切りの午後 4 時を過ぎるとタイマーがリセットされます。週末は翌日配達ができないため、金曜日、土曜日、日曜日の場合はタイマーを調整して計算します。
この JsFiddle は、週末を除く毎日午後 4 時までカウントダウンするデモを示しています: https://jsfiddle.net/u3t2n9jk/6/
私の問題
締め切りを午後 4 時から午後 3 時に変更する必要があるだけです。何らかの理由で var の締め切り = 16 を 15 (24 時間時計) に変更すると、金曜日、土曜日、日曜日の計算が壊れます。正しく動作させるために他に何をする必要がありますか?
function nextDay() {
var target = new Date();
var deadline = 16; // Set 4pm/16:00hrs dispatch deadline
if (target.getHours() < deadline || (target.getHours() == 15 && target.getMinutes() == 59 ) ) {
console.log('Before deadline ' + target.getMinutes());
if ( target.getDay() == 5 && target.getHours() == 16 && target.getSeconds() > 1 ) { // For Friday After 4PM
target.setHours(88, 0, 0, 0);
}
else if ( target.getDay() == 6 ) { // For Saturday
target.setHours(64, 0, 0, 0);
}
else if ( target.getDay() == 7 ) { // For Sunday
target.setHours(30, 0, 0, 0);
}
else {
target.setHours(deadline, 0, 0, 0);
}
} else if (target.getHours() > deadline || (target.getHours() == deadline && target.getMinutes() >= 0) ) {
console.log('After deadline ' + target.getMinutes());
if ( target.getDay() == 5 && target.getHours() == 16 && target.getSeconds() > 1 ) { // For Friday After 4PM
target.setDate(target.getDate() + 1);
target.setHours(88, 0, 0, 0);
}
else if ( target.getDay() == 6 ) { // For Saturday
target.setDate(target.getDate() + 1);
target.setHours(64, 0, 0, 0);
}
else if ( target.getDay() == 7 ) { // For Sunday
target.setDate(target.getDate() + 1);
target.setHours(30, 0, 0, 0);
}
else {
target.setDate(target.getDate() + 1);
target.setHours(deadline, 0, 0, 0);
}
}
return target;
}