我一直在编写一些依赖于通用时间的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年的网络连接系统来说是令人震惊的(,那么你需要从其他地方获取当前时间。
实现这一点的标准方法是使用网络时间协议。
谷歌快速打开NTP客户端的JavaScript实现:
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分钟左右(。