javascript - 在网站上显示准确的本地时间?

标签 javascript web-services timezone

有人要求我在我们的网站上显示“正确”时间,坦率地说,我觉得这毫无意义,因为“正确”可以用多种方式解释。

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

所以为了获得显示的“正确”时间,我可以;

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

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

这是来自 Jon Galloway on Atomic Clock Web Service 的博文这是相当古老的,但当我用谷歌搜索时排名很高,但他没有得出结论。

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

有什么我遗漏的 Angular 吗?

最佳答案

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

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

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

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

关于javascript - 在网站上显示准确的本地时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/244148/

相关文章:

java - 关键云类型转换厂的时区变化

c++ - 如何使用 C++ 和 Boost 查找纽约本地时间?

javascript - slider 未定义/NaN 错误

javascript - Node.js 支持 =>(箭头函数)

javascript - 我们如何在不与服务器建立任何连接的情况下检查我们的 IP 地址?

java - 如何最好地在 XML 中实现 HATEOAS 的链接关系?

javascript - 使用 angularjs,如何触发文件上传指令的更改事件?

javascript - 不使用原型(prototype)向函数添加属性

c# - 使用 XmlTextReader

ruby-on-rails - Rails 处理用户特定时区