【问题标题】:How does UTC work with Javascript and computers with wrong times?UTC 如何与 Javascript 和错误时间的计算机一起工作?
【发布时间】:2020-07-25 21:26:12
【问题描述】:

我一直在编写一些依赖通用时间的 JavaScript 代码。我一直在用两台电脑在线做这个。其中一个比另一个晚 24 分钟。

例子:

Computer 1: 25/07/2020, 21:57     Computer 2: 25/07/2020, 22:21

当两台计算机都输入 UTC 数字时,它们仍然相隔 24 分钟。

Computer 1: 1595710054892    Computer 2: 1595711497605

这种时间差异导致我的程序出现问题,因为它依赖于定时通知。

无论如何要纠正这个问题,还是我只希望使用我的 JavaScript 代码的计算机在各自的时区内都有相同的时间?

【问题讨论】:

  • 如果通知发往或来自服务器,那么您的 JavaScript 代码是否也能从该服务器获取正确的时间?
  • 还有一些答案in this question 可能会有所帮助。这有点过时了(不是双关语),但有一些很好的提示。

标签: javascript time utc systemtime


【解决方案1】:

如果您不能信任计算机上的时钟(坦率地说,这对于 2020 年的联网系统来说是令人震惊的),那么您需要从其他地方获取当前时间。

执行此操作的标准方法是使用Network Time Protocol

一个快速的谷歌出现this JavaScript implementation of an NTP client

var ntpClient = require('ntp-client');
 
ntpClient.getNetworkTime("pool.ntp.org", 123, function(err, date) {
    if(err) {
        console.error(err);
        return;
    }
 
    console.log("Current time : ");
    console.log(date); // Mon Jul 08 2013 21:31:31 GMT+0200 (Paris, Madrid (heure d’été))
});

如果您在浏览器中处理 JS,您将无法直接使用 NTP 协议,因此您需要通过一些服务器端代码代理请求,这会失去一些准确性(但假设一个合理的网络连接,这将是几秒钟而不是 10 分钟的数量级)。

【讨论】:

    猜你喜欢
    • 2020-04-13
    • 2015-09-25
    • 1970-01-01
    • 1970-01-01
    • 2022-11-12
    • 2020-04-03
    • 1970-01-01
    • 1970-01-01
    • 2011-10-13
    相关资源
    最近更新 更多