回答
尝试这样? “1900年1月1日以来的秒数”格式我不确定,但您可以根据需要进行修改。
long ntp = 3490905600;
DateTime start = new DateTime(1900, 1, 1);
DateTime dt = start.AddSeconds(ntp);
Console.WriteLine(dt.ToString());
Console.WriteLine(dt.ToUniversalTime().ToString());
谢谢。我刚回来自己回答。 – 2011-03-05 21:58:49
正如rene指出的那样,NTP时间戳由一个整数和一个小数部分组成。整数部分表示从基准时间开始的秒数,即1900年1月1日。小数部分表示小数单位的数量(单位为1 /((2^32)-1))。
此外,时间表示法是UTC。
因此,如果你有一个NTP时间戳,比如14236589681638796952。NTP是一个64位无符号定点数。我们可以这样说:
UINT64 ntpTimestamp = 14236589681638796952;
高32个比特由下式给出:
UInt32的秒=(UInt32的)((ntpTimestamp >> 32)& 0xFFFFFFFF的);
和低32位被由下式给出:
UInt32的分数=(UInt32的)(ntpTimestamp & 0xFFFFFFFF的);
以秒为数量等于最显著字或在这种情况下: 秒== 3314714339
毫秒的数量可以在从级分用该计算式计算:
Int32毫秒=(Int32)(((Double)fraction/UInt32.MaxValue)* 1000);
在这种情况下,这是12。
因此日期时间值是从得到:
的DateTime BaseDate =新日期时间(1900年,1,1,0,0,0,0,DateTimeKind.Utc);
DateTime dt = BaseDate.AddSeconds(seconds).AddMilliseconds(milliseconds);
因此,14236589681638796952的NTP时间戳等于2005年1月14日17:58:59和12毫秒UTC。
这个工作可靠,对我来说:
#define NTP_TIMESTAMP_DIFF (2208988800) // 1900 to 1970 in seconds
#define NTP_MAX_INT_AS_DOUBLE (4294967295.0) // Max value of frac
// take care of the endianness
reply_pkt.tx_time_sec = ntohl(reply_pkt.tx_time_sec) ;
reply_pkt.tx_time_frac = ntohl(reply_pkt.tx_time_frac) ;
// parse
time_t tx_time = (time_t) (reply_pkt.tx_time_sec - NTP_TIMESTAMP_DIFF);
double frac = ((double)reply_pkt.tx_time_frac)/NTP_MAX_INT_AS_DOUBLE ; // 2^32 -1
struct tm *tm = gmtime(&tx_time) ;
char ts[49];
strftime(ts,48,"[%Y-%m-%d %H:%M:%S]",tm);
printf("NTP query: reply was %s\n",ts);
ntp_time_seconds = ((double)tx_time) + frac ;
- 1. 转换为UTC时间戳
- 2. 将UTC转换为Unix时间戳
- 3. Python:将UTC时间元转换为UTC时间戳
- 4. 将UTC中的时间戳转换为时间戳
- 5. 转换成时间戳UTC
- 6. 将UTC时间戳转换为其他时区特定时间
- 7. 如何将UTC时间转换为Unix时间戳在swift中?
- 8. 转换时间戳从PST到UTC
- 9. 如何在MySql中将unix时间戳转换为UTC日期?
- 10. 在utx awk中将utc时间戳转换为est
- 11. Django/Python时间戳将EDT转换为UTC
- 12. 将历史时间戳从UTC转换为本地
- 13. 如何将PST Unix时间戳转换为UTC?
- 14. 将64位长的UTC时间戳转换为Actionscript日期
- 15. 如何特定的时间转换为UTC时间戳
- 16. logstash UTC时间转换为长时间戳
- 17. 将时间戳转换为时间
- 18. 如何在select语句中将UTC时间戳值从UTC转换为EST?
- 19. 转换时间为UTC
- 20. 将UTC转换为当地时间Javascript
- 21. codenameone将时间转换为utc
- 22. Haskell将ByteString转换为UTC时间
- 23. 将UTC时间转换为本地android
- 24. 将UTC时间转换为DateTime对象
- 25. Ruby:将BST时间转换为UTC
- 26. 将当地时间转换为utc
- 27. 将NTP时间转换为人类可读的时间
- 28. 如何在Python中将日期时间转换为UTC时间戳?
- 29. 在Python中将时间戳转换为UTC中的组合日期和时间
- 30. 如何将UTC时间戳转换为ABAP中的系统日期和时间
你有一个样品的输入? – 2011-03-05 21:43:14
根据这个链接http://souptonuts.sourceforge.net/readme_working_with_time.html自01-01-1990以来的秒数在长ntp的高阶整数中。 – rene 2011-03-05 21:48:09