Unix 时间戳网络服务

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

互联网上是否有可靠的 Web 服务可以返回当前 Unix (UTC) 时间戳?

web-services unix-timestamp
2个回答
1
投票

一个可行的解决方法可能是使用通过 HTTP 响应获得的响应标头。在像我这样的罕见情况下,当您无法直接访问 Web 服务器并且无法自己创建 API 时,您可以发送 XHR 并使用

获取响应标头

response.getAllResponseHeaders()

然后解析返回字符串中的

date
值。当然,您必须相信服务器日期。 我知道这是一个罕见的(也许是愚蠢的)用例,但它可能会发生。


0
投票

这是一个如何使用 Python 可靠地获取它的示例,它可以轻松地移植到几乎任何语言:

from contextlib import closing
from socket import socket, AF_INET, SOCK_DGRAM
import struct
import time

NTP_PACKET_FORMAT = "!12I"
NTP_DELTA = 2208988800  # 1970-01-01 00:00:00
NTP_QUERY = b'\x1b' + 47 * b'\0'  

def ntp_time(host="pool.ntp.org", port=123):
    with closing(socket( AF_INET, SOCK_DGRAM)) as s:
        s.sendto(NTP_QUERY, (host, port))
        msg, address = s.recvfrom(1024)
    unpacked = struct.unpack(NTP_PACKET_FORMAT,
                   msg[0:struct.calcsize(NTP_PACKET_FORMAT)])
    return unpacked[10] + float(unpacked[11]) / 2**32 - NTP_DELTA

其中

ntp_time()
返回当前 UTC Unix 时间戳,包括微秒。

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