2014-07-14 25 views
1

我想爲PHP設置一個用戶的時區偏移量,通過ajax發送。一個頁面已經加載了會話數據。如果沒有這個數據被放入頁面:Javascript休息時間沒有DST

<script type="text/javascript"> 
    $(document).ready(function() { 
     var visitortime = new Date(); 
     visitortime.setMonth(1); 
     var visitortimezone = visitortime.getTimezoneOffset()*60; 
     $.ajax({ 
      url: "/ajax/timezone/set/"+ visitortimezone, 
      success: function(){ 
       location.reload(); 
      } 
     }); 
    }); 
</script> 

沒有visitortime.setMonth(1);它運行良好,並返回正確的偏移量。但有了它,它只返回0.

我希望能夠在沒有DST的情況下獲得時區偏移,然後在PHP端運行DST檢查。

+0

您不能恢復只有其偏移量的時區名稱。 – zerkms

+0

@zerkms我知道,我只是想獲得偏移秒(因爲我在unix時間戳中做了所有事情,所以它很容易設置爲用戶時區)。 –

+0

哎呀,我以爲你在做'/ ajax/timezone/get /':-S甚至不能意識到有人會用GET請求來更新某些東西 – zerkms

回答

1

我設法與該位的代碼解決這個問題:

Date.prototype.stdTimezoneOffset = function() { 
    var jan = new Date(this.getFullYear(), 0, 1); 
    var jul = new Date(this.getFullYear(), 6, 1); 
    return Math.max(jan.getTimezoneOffset(), jul.getTimezoneOffset()); 
} 

Date.prototype.dst = function() { 
    return this.getTimezoneOffset() < this.stdTimezoneOffset(); 
} 

$(document).ready(function() { 
    var visitortime = new Date(); 
    var visitortimezone = visitortime.getTimezoneOffset()*60; 

    if(visitortime.dst()){ 
     visitortimezone = visitortimezone + 60*60; 
    } 

    $.ajax({ 
     type: "GET", 
     url: "/ajax/timezone/set/"+ visitortimezone, 
     success: function(){ 
      location.reload(); 
     } 
    }); 
}); 

這裏找到:Check if Daylight Saving Time is in effect, and if it is for how many hours