如何从NTP服务器获取当前时间?

问题描述 投票:0回答:1

问题

我见过一些方法可以做到这一点,但不是在纯 JavaScript 中。

向服务器发送获取请求后,我得到了网站的 HTML,而不是必要的时间。以任何方式解析它似乎都没有帮助,因为它只是网站的标记,并且似乎在任何地方都不包含它。

我尝试使用 Cloudfare 和 Google 的 ntp,而且使用 Date() 对我来说还不够,因为它使用系统时间。

我做错了什么?

这是我的代码

const ntpServerUrl = 'https://time.cloudflare.com';

fetch(ntpServerUrl)
    .then(response => response.text())
    .then(data => {
        console.log(data)
        const ntpTime = parseFloat(data);

        const localTime = new Date(ntpTime * 1000);

        console.log('Local Time:', localTime);
    })
    .catch(error => {
        console.error('Error fetching NTP time:', error);
    });
javascript date time ntp
1个回答
0
投票

您正在使用带有 HTTP 方案的 URL、使用 fetch(这是一个 HTTP 客户端)向 HTTP 服务器发出 HTTP 请求。

如果您想发出 NTP 请求,那么您必须使用 NTP 客户端。 npm 列出了许多 NTP 库

(请注意,由于网络 API 的通常限制,在 Web 浏览器中运行的 JS 不太可能能够发出 NTP 请求)。

© www.soinside.com 2019 - 2024. All rights reserved.