我想在我的主页上添加一个像http://www.dynamicdrive.com/dynamicindex6/localtime.htm这样的JavaScript世界时钟,但每次DST更改时区时我都不想更改它。是否可以自动与官方时间服务器同步,以便我可以在DST后显示不同地方的当前时间并且没有任何更改?
答案 0 :(得分: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实施:
使用上述方法让PHP输出您感兴趣的所有不同时区,但使用date('Z')
来获取UTC的秒数偏移量。使用JSON或其他东西输出它,以便Javascript可以使用它:
var offsets = {
'Brisbane' : 36000,
'Sydney' : 42000,
'London' : 0
};
循环遍历所有内容,根据需要添加和减去偏移量。
for (var city in offsets) {
var d = new Date();
d.setTime(d.getTime() + offsets[city] * 1000);
alert('The time in ' + city + ' is ' + d.toUTCString());
}
将上述内容放入每秒调用的函数中,使用setInterval
但需要注意的是:它不能保证准确,因为从理论上讲,当某人打开窗户(他们可能位于夏令时的边界)时,某个地点的时区可能会发生变化。这不太可能,页面刷新会显示正确的时间,所以这可能不是什么大问题。