Цель:
Чтобы создать обратный отсчет до следующего доступного прямого эфира.
подробности:
Мы в прямом эфире шесть раз в неделю все (PST).
1. Воскресенье в 8:00 утра.
2. Воскресенье в 10:00 утра.
3. Воскресенье в 12:00
4. Воскресенье в 6:30 вечера.
5. Среда в 7:00 вечера.
6. Суббота в 10:00 утра.
Мой подход:
Первоначально я проверяю, какой сегодня день и сколько времени, затем создаю обратный отсчет до следующего потока. Это прекрасно работает для нашего часового пояса (PST) и любых, которые относительно близки.
Проблема:
Проверка первого дня нарушает мой подход к людям в часовых поясах, которые ставят их на один день впереди нас. Например, если кто-то из Лондона проверяет сайт в четверг в 2:30 утра (GMT), мой код начнет обратный отсчет до потока субботы 10:00 утра вместо среды в 7:00 вечера. (PST), который начнется через 30 минут.
Я уверен, что то, что я сделал, можно очистить и улучшить, скажите мне, как.
Мой код:
// Countdown
function countDown( addDay, hour, min ) {
var newCount = new Date();
newCount = new Date(newCount.getFullYear(), newCount.getMonth(), newCount.getDate() + addDay, hour, min);
$('#service_countdown').countdown({until: $.countdown.UTCDate(-8, newCount)});
}
var day_ref, day, addDay, hour, min;
addDay = 0;
hour = 0;
min = 0;
day = {};
day_ref = new Date();
day = {"day" : day_ref.getDay(), "hour" : day_ref.getHours(), "min" : day_ref.getMinutes()};
// It's Sunday
if ( day.day === 0 ) {
if ( day.hour < 8 ) {
hour = 8;
countDown(addDay, hour, min);
}
else if ( day.hour < 10 ) {
hour = 10;
countDown(addDay, hour, min);
}
else if ( day.hour < 12 ) {
hour = 12;
countDown(addDay, hour, min);
}
else if ( day.hour <= 18 && day.min < 30 ) {
hour = 18;
min = 30;
countDown(addDay, hour, min);
}
else {
addDay = 3;
hour = 19;
countDown(addDay, hour, min);
}
}
// It's Monday
else if ( day.day === 1 ) {
addDay = 2;
hour = 19;
countDown(addDay, hour, min);
}
// It's Tuesday
else if ( day.day === 2 ) {
addDay = 1;
hour = 19;
countDown(addDay, hour, min);
}
// It's Wednesday
else if ( day.day === 3) {
if ( day.hour < 19 ) {
hour = 19;
countDown(addDay, hour, min);
} else {
addDay = 3;
hour = 10;
countDown(addDay, hour, min);
}
}
// It's Thursday
else if ( day.day === 4 ) {
addDay = 2;
hour = 10;
countDown(addDay, hour, min);
}
// It's Friday
else if ( day.day === 5 ) {
addDay = 1;
hour = 10;
countDown(addDay, hour, min);
}
// All that's left is Saturday
else {
if ( day.hour < 10 ) {
hour = 10;
countDown(addDay, hour, min);
} else {
addDay = 1;
hour = 8;
countDown(addDay, hour, min);
}
}
Заранее спасибо за любую помощь!