3

我想在我的主页中包含一个像http://www.dynamicdrive.com/dynamicindex6/localtime.htm这样的 JavaScript 世界时钟,但我不想每次 DST 更改时区时都更改它。是否可以将其与官方时间服务器自动同步,以便我可以实时显示不同地点的当前时间,并且在 DST 之后没有任何更改?

4

1 回答 1

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 或其他东西输出它,以便 Javascript 可以使用它:

    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 的边界上),一个位置的时区可能会改变。这不太可能,并且页面刷新会显示正确的时间,所以这可能没什么大不了的。

于 2010-01-24T01:48:55.563 回答