在网站上显示准确的当地时间?

Dav*_*son 6 javascript timezone web-services

我被要求在我们的网站上显示"正确"的时间,我坦率地认为这是毫无意义的,因为'正确'可以用各种方式解释.

我们当前的方法肯定会导致不准确的时间,因为它使用服务器控件呈现运行onload的JavaScript,使用服务器的日期时间作为参数在JavaScript中创建最终呈现在页面上然后开始递增时钟的时钟对象.在服务器处理,网络延迟和客户端性能(运行onload之外还有很多其他东西)之间,时钟最终远离实际的服务器时间,而且与客户端PC相比,谁知道.

因此,为了获得"正确"的时间,我可以;

  • 使用本地PC时间并将新的Date()传递给JavaScript时钟对象.优点:应尽可能接近PC时钟.缺点:不确定PC时钟在哪个时区更准确.
  • 使用Web服务向NTP服务器发送TCP请求以更新网页上的时钟.优点:如果本地PC也同步到NTP将是准确的并且最佳匹配.缺点:必须处理相对于我们服务器的所有时区调整.如果PC时钟输出仍然不匹配.

我是否实施自己的网络服务或使用类似的东西; 地球工具或世界时间网络服务(编辑:链接已删除 - 现在404)

这是Jon Galloway关于原子钟网络服务的博客文章,这篇博文很老,但是当我谷歌并没有得出结论时它排名很高.

我可以赢得与管理层的争论,为什么如果你不在那个时区,为什么我们甚至需要匹配本地PC,同步到我们的服务器时钟(GMT)是没有意义的.

我失踪的任何角度?

小智 2

我需要在拍卖网络应用程序中向客户显示准确的时间。您可以将当前服务器时间与页面一起发送,并让 JavaScript 立即初始化,而无需等待页面的其余部分加载。因此,您只需处理网络延迟,在最坏的情况下,网络延迟可能不会超过几秒钟。

之后,你就非常接近准确的时间了。只要你的 Javascript 计时器代码编写正确,在下一个页面加载之前就不会出现太不同步的情况。但我见过很多糟糕的 JS 时钟代码。(提示:Date() 好,setTimeout() 不好。)

如果您的应用程序需要用户长时间使用,只需通过重新加载页面或 Ajax 来刷新时间同步即可。

我不会担心时区,只需使用 UTC 时间,这样就不会混淆事情发生的时间。