代码之家  ›  专栏  ›  技术社区  ›  Gregg B

这个JS时间代码可以工作吗?我能做得更好吗?

  •  0
  • Gregg B  · 技术社区  · 14 年前

    我在周六下午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 回复  |  直到 14 年前
        1
  •  2
  •   Phil Kulak    14 年前

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

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

    你也可以清理一下这个条件:

    if (!(day == 6 && hour >= 18) && !(day == 0 && hour < 4)) {
        $('#warning').hide();
    }
    
        2
  •  0
  •   Phil Kulak    14 年前

    这将使您获得服务器的时间:

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

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

    而且,这将打破日光节约。您必须以某种方式检测并修改ServerOffset。