2016-03-07 1 views
0

У меня есть этот код, который я нашел в сообщении в блоге, и его повторный 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; 
} 

ответ

0

Закончено переписывание логики позади него с небольшой помощью от коллеги по работе. Обратите внимание, что вы можете скопировать/вставить этот код, чтобы он работал, однако вам также понадобится jQuery Countdown plugin:

function nextDay() { 
var target = new Date(); 
var hours_now = target.getHours(); 
target.setHours(15); 
target.setMinutes(0); 
target.setSeconds(0); 

// target is 3 today 

if (target.getDay() == 5 && hours_now >= 15) { // For Friday After 3PM 
    target.setDate(target.getDate() + 3); // target is 3 on Monday 
} 
else if (target.getDay() == 6 ) { // For Saturday 
    target.setDate(target.getDate() + 2); // target is 3 on Monday 
} 
else if (target.getDay() == 0) { // For Sunday 
    target.setDate(target.getDate() + 1); // target is 3 on Monday 
} 
else if (hours_now >= 15){ // Any other day and after deadline 
    target.setDate(target.getDate() + 1); // target is 3 Tomorrow 
} 
return target; 
} 

function reset() { 
window.location.reload(); 
} 

$('#timer').countdown({ 
until: nextDay(), 
onExpiry: reset, 
expiryText: '<div class="end">You have missed todays dispatch.</div>', 
labels: ['Years', 'Months', 'Weeks', 'days', 'hrs', 'min', 's'], 
labels1: ['Year', 'Month', 'Week', 'day', 'hr', 'min', 's'], 
format: 'HMS' 
}); 

 Смежные вопросы

  • Нет связанных вопросов^_^