English 中文(简体)
在网站上显示准确的本地时间?
原标题:
  • 时间:2008-10-28 17:33:25
  •  标签:

我被要求在我们的网站上显示正确的时间,但我认为这是毫无意义的,因为“正确”的解释可以多种多样。

我们目前的方法一定会产生不准确的时间,因为它使用了服务器控制呈现JavaScript,该JavaScript在使用服务器的datetime作为参数创建JavaScript中的时钟对象时在onload上运行,最终呈现在页面上并开始递增时钟。由于服务器处理、网络延迟和客户端性能(有很多其他东西可以在onload上运行),时钟最终与实际服务器时间相差很大,而与客户端PC相比则无从得知。

为了显示正确的时间,我可以;

  • Use local PC time and pass new Date() to the JavaScript clock object. Pros: Should be as close to the PC clock as possible. Cons: Not sure how accurate the PC clock is let alone in which timezone.
  • Use web service for TCP request to NTP server to update clock on web page. Pros: If local PC also sync d to NTP will be accurate and best possible match. Cons: Will have to handle all the timezone adjustments relative to our servers. If PC clock is out will still have mismatch.

我是实施自己的Web服务还是使用类似这样的东西; Earth Tools 或者世界时间Web服务(编辑: 链接已删除 - 现在404)?

这是来自Jon Galloway关于原子钟网络服务的博客文章,相当久远,但是在我谷歌搜索时排名很高,他并没有得出结论。

希望我能赢得与管理层的争论,证明如果你不在那个时区,与我们的服务器时钟(GMT)同步毫无意义,为什么我们甚至需要匹配本地电脑。

我有没有错过任何角度?

最佳回答

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

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

如果您有一个用户将要长时间使用的应用程序,请刷新您的时间同步,可以通过重新加载页面或Ajax来实现。

我不会担心时区问题,只需使用协调世界时,这样就不会有关于事件发生时间的混乱。

问题回答

首先,确保您的客户知道Windows、Linux和OSX都有内置时钟,几乎总是对用户可见(或非常容易被设为可见)。此外,请确保您的客户知道,通常会在任何可能隐藏操作系统内置时钟的信息亭附近设置物理时钟。

如果您知道这一点,但您的客户仍想在您的网站上放置时钟,请让您的客户定义“正确”的时间,然后根据他们的定义实施解决方案(您的两种解决方案似乎都将处理最常见的两种定义)。

你可以使用地理定位来了解网站访问者的实际位置,并在数据库中存储该地区的(GMT -XX:XX),然后根据请求的位置计算时间。这将节省到任何第三方网络服务的漫长旅程。

另一种实现方法是使用IP地理位置。有些服务可以根据其ip告诉您用户连接来自哪里(通常包括他们的时区),并结合您服务器的实时时钟,您可以向用户显示本地时间。

这远非完美,尤其对于企业用户来说,他们可能会从某个他们不在的地方连接(我生活在阿根廷,但我的工作互联网连接是通过我的雇主,这是一家美国公司,因此每个网站都认为我位于美国)。

使用协调世界时进行处理时间。

  • Have users tell you what zone they want to use.
  • If your users have persistent profiles, persist the choice.
  • Always display UTC and Local Time side by side and clearly labelled.

You can also display an arbitrary number of user specified zone clocks. Vista does this and I remain surprised at how handy it is.





相关问题
热门标签