将 NTP 时间戳转换为 utc
将 NTP 时间戳转换为 utc 的最简单方法是什么。我知道它是 NTP 格式,我可以将其转换为任何其他格式。
谢谢。 鲍勃.
Whats the easiest way to convert an NTP timestamp to utc. I know it's in NTP, I can convert it into any other format.
Thanks.
Bob.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
正如 rene 指出的那样,NTP 时间戳由整数和小数部分组成。整数部分表示自基准时间(即 1900 年 1 月 1 日)以来的秒数。小数部分表示秒中小数单位的数量(单位为 1/((2^32)-1))。
此外,时间表示为 UTC。
因此,如果您的 NTP 时间戳为 14236589681638796952。NTP 是一个 64 位无符号定点数。我们可以说:
高 32 位由下式给出:
低 32 位由下式给出:
以秒为单位的数字等于最重要的单词,或者在本例中:
秒 == 3314714339
可以使用以下计算从分数中计算出毫秒数:
在本例中为 12。
因此,DateTime 值由以下公式得出:
因此,NTP 时间戳 14236589681638796952 等于 2005 年 1 月 14 日 17:58:59,比 UTC 晚 12 毫秒。
As rene pointed out the NTP timestamp is made up of an integer and a fractional part. The integer part represents the number of seconds since base time, which is 1st Jan 1900. The fractional part represents the number of fractional units (a unit is 1/((2^32)-1)) in the second.
Also, the time representation is UTC.
Therefore, if you have an NTP Timestamp of say 14236589681638796952. NTP is a 64-bit unsigned fixed-point number. We can say:
The high 32 bits are given by:
And the low 32 bits are are given by:
The number in seconds is equal to the most significant word or in this case:
seconds == 3314714339
The number of milliseconds can be calculated from the fraction using this calculation:
Which is 12 in this case.
Thus the DateTime value is yielded from:
Therefore the NTP Timestamp of 14236589681638796952 is equal to the 14th Jan 2005 at 17:58:59 and 12 milliseconds UTC.
对我来说,这工作可靠:
This works reliably, for me:
尝试这样的事情吗?我不确定“自 1900 年 1 月 1 日以来的秒数”的格式,但您可以根据需要进行修改。
Try something like this? I'm not sure on the format of that 'seconds since Jan 1 1900', but you can modify as you see fit.