2010-11-17 41 views
0

我在週六下午6點和週日上午4點之間顯示一條消息。上次我不得不這樣做,它不起作用,因爲我沒有考慮到UTC時間變爲負值時,將其更改爲紐約時間。這個JS時間碼會工作嗎?我可以做得更好嗎?

我在做數學的權利(在適當的時間顯示)?我應該把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

爲什麼你甚至不需要是UTC的東西?只是當地時間工作:

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

你可以清理條件有點太:

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

我們有國際用戶,所以我的想法是,維護是EDT,我需要考慮,因爲當地時間將是他們當地的時間。感謝您對條件的幫助。 – 2010-11-17 15:54:39

+0

希望能夠從整體上獲得更多關於腳本的反饋,但是這有所幫助,非常感謝! – 2010-11-17 23:51:55

0

這應該讓您的服務器的時間:

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

玩弄那服務器偏移量中的「5」;這是幾個小時。它可能需要是-5;我不太確定。

此外,這將打破每一個夏令時。你必須以某種方式檢測並修改serverOffset。

相關問題