我见过一些方法可以做到这一点,但不是在纯 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);
});
您正在使用带有 HTTP 方案的 URL、使用 fetch(这是一个 HTTP 客户端)向 HTTP 服务器发出 HTTP 请求。
如果您想发出 NTP 请求,那么您必须使用 NTP 客户端。 npm 列出了许多 NTP 库。
(请注意,由于网络 API 的通常限制,在 Web 浏览器中运行的 JS 不太可能能够发出 NTP 请求)。