2010-01-24 34 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