У меня есть этот код, который я нашел в сообщении в блоге, и его повторный 24-часовой таймер обратного отсчета с использованием http://keith-wood.name/countdown.html. Моя цель использовать его в качестве крайнего срока для доставки на следующий день, поэтому, когда истечет срок 4 часа, таймер сбрасывается. На следующий день доставка не доступна по выходным, поэтому их расчет позволяет настроить таймер в пятницу, субботу или воскресенье.jQuery таймер обратного отсчета прерывает выходные дни, когда время было изменено
Это JsFiddle показывает демо, где он отсчитывает до 4 вечера каждый день, кроме выходных: https://jsfiddle.net/u3t2n9jk/6/
Моя проблема
Я просто нужно изменить срок от 4 вечера до 3 вечера. Если я изменю крайний срок для вагона = от 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;
}