这个JS时间码会起作用吗?我可以做得更好吗?

时间:2010-11-17 15:46:43

标签: javascript datetime function utc

我在周六下午6点到周日凌晨4点之间显示一条消息。我最后一次这样做是不行的,因为我没有考虑将UTC时间改为纽约时间的时间为负。

我正在进行数学运算(在适当的时间显示)?我应该将UTC转换代码放入自己的函数中吗?这是你见过的最糟糕的js吗?

- 调用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 个答案:

答案 0 :(得分:2)

为什么你甚至需要那些UTC的东西?只需与当地时间合作:

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

你也可以稍微清理那个条件:

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

答案 1 :(得分:0)

这应该可以让你获得服务器的时间:

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

在服务器偏移量中使用“5”;这是时间。它可能需要是-5;我不太确定。

此外,这将打破每一个夏令时。你必须以某种方式检测到并修改serverOffset。