Будет ли работать этот временной код JS?Могу ли я сделать это лучше? - PullRequest
0 голосов
/ 17 ноября 2010

Я показываю сообщение между субботой в 18:00 и воскресением в 4:00. В прошлый раз, когда мне пришлось это сделать, это не сработало, потому что я не учел время, когда UTC стало отрицательным, при изменении его на время по Нью-Йорку.

Я правильно делаю математику (отображается в соответствующее время)? Должен ли я поместить код преобразования UTC в его собственную функцию? Это худшее, что вы когда-либо видели?

- jquery называется -

$(document).ready(function() {
var dayTime = new Date();
var day = dayTime.getUTCDay();
var hour = dayTime.getUTCHours();
    //alert(day.toString()+" "+hour.toString());
    if (hour >= 5){
         hour = hour-5;          
    }
    else{
        hour = hour+19;
            if(day > 0){
                day--;
            }
            else{
                day = 6;    
            }
    }
    //alert(day.toString()+" "+hour.toString());
    if ((day == 6 && hour >= 18) || (day == 0 && hour < 4)){            
    }
    else{
        $('#warning').hide();  //Want this message to show if js is disabled as well
    }
});

Ответы [ 2 ]

2 голосов
/ 17 ноября 2010

Зачем вам вообще нужен этот UTC материал?Просто работайте с местным временем:

var day = dayTime.getDay();
var hour = dayTime.getHours();

И вы также можете немного убрать это условие:

if (!(day == 6 && hour >= 18) && !(day == 0 && hour < 4)) {
    $('#warning').hide();
}
0 голосов
/ 17 ноября 2010

Это должно дать вам время вашего сервера:

var dayTime = new Date();
localOffset = dayTime.getTimezoneOffset() * 60000;
serverOffset = 5 * 60 * 60000;
dayTime = new Date(dayTime.getTime() + (localOffset - serverOffset));

Поиграйте с этой "5" в смещении сервера;это часы.Возможно, должно быть -5;Я не совсем уверен.

Кроме того, это сломает каждую летнюю экономию.Вам придется как-то это обнаружить и изменить serverOffset.

...