开发者

Will this JS time code work? Can I make it better?

开发者 https://www.devze.com 2023-01-25 07:47 出处:网络
I\'m displaying a message between Saturday at 6pm and Sunday 4am. The last time I had to do this it didn\'t work because I didn\'t take into account UTC time going negative when changing it to NYC tim

I'm displaying a message between Saturday at 6pm and Sunday 4am. The last time I had to do this it didn't work because I didn't take into account UTC time going negative when changing it to NYC time.

I am doing the math right (displaying at the appropriate times)?Should I put the UTC conversion code into its own function? Is this the worst js you've ever seen?

-- jquery is called --

$(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;          
    }
    els开发者_如何学Ce{
        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
    }
});


Why do you even need that UTC stuff? Just work with local time:

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

And you can clean up that conditional a bit too:

if (!(day == 6 && hour >= 18) && !(day == 0 && hour < 4)) {
    $('#warning').hide();
}


This should get you your server's time:

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

Play around with that "5" in the server offset; it's the hours. It may need to be a -5; I'm not really sure.

Also, that's going to break every daylight savings. You'll have to detect that somehow and modify serverOffset.

0

精彩评论

暂无评论...
验证码 换一张
取 消