UTC 如何处理 Javascript 和时间错误的计算机?

How does UTC work with Javascript and computers with wrong times?

我一直在编写一些依赖世界时的 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 代码的计算机在各自的时区内都具有相同的时间?

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

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

快速 Google 出现 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 协议,因此您需要通过一些服务器端代码来代理请求,这会损失一些准确性(但假设一个合理的网络连接,这将是几秒钟而不是几十分钟的数量级)。