2010-01-24 37 views
3

我想在我的主頁中添加一個JavaScript世界時鐘,如http://www.dynamicdrive.com/dynamicindex6/localtime.htm,但我不希望每當DST更改時區時都更改它。是否可以自動將其與官方時間服務器同步,以便我可以在現場顯示不同地點的當前時間,並且在DST之後沒有任何更改?DST支持和服務器同步的世界時鐘

+0

Windows Server/.NET有很多關於時區的記錄,因此取決於您的環境,您可能甚至不需要官方時間服務器。你的問題沒有說明,但是如果你正在尋找一個沒有任何服務器端代碼的「純粹」JavaScript解決方案。 – 2010-01-24 00:39:14

+0

服務器運行在Linux(Debian)上,如果需要服務器端語言,我想使用PHP(我的網站的其餘部分也是用PHP編寫的)。 – Peleke 2010-01-24 01:30:51

回答

1

使用標準date函數以及date_default_timezone_set

$timezones = array("Australia/Brisbane", "America/New York", "Europe/London"); 

foreach ($timezones as $tz) { 
    date_default_timezone_set($tz); 
    echo "The time in $tz is: " . date('r'); 
} 

它處理所有的夏令時和一切爲你。

你可以找到支持時區的列表,在此:http://www.php.net/manual/en/timezones.php


編輯:Javascript實現:

  1. 用上面的方法來讓PHP輸出所有不同你感興趣的時區,但使用date('Z')獲得UTC的秒偏移量。它使用JSON輸出或東西,所以Java腳本可以使用它:通過他們所有

    var offsets = { 
        'Brisbane' : 36000, 
        'Sydney' : 42000, 
        'London' : 0 
    }; 
    
  2. 循環,增加並根據需要減去偏移。

    for (var city in offsets) { 
        var d = new Date(); 
        d.setTime(d.getTime() + offsets[city] * 1000); 
        alert('The time in ' + city + ' is ' + d.toUTCString()); 
    } 
    
  3. 把上面成被稱爲每秒鐘功能,採用的setInterval

一個警告,雖然:它不能保證準確,因爲從理論上講,一個地區的時區可能會改變而有人打開窗戶(他們可能在DST的邊界)。這不太可能,刷新頁面會顯示正確的時間,所以這可能不是什麼大問題。

+0

您忘記提及您在他/她需要JavaScript時使用PHP。我建議將所有初始數據加載到某些表單域中,並使用JavaScript通過使用setInterval函數進行輪詢來更新它們的時間。 – 2010-01-24 02:20:33

+0

是的,我已經在使用這樣的代碼,但我想要使用JavaScript實時更新時鐘,並且僅爲

+0

@Peleke現在檢查編輯。 – nickf 2010-01-24 06:40:19