回答
嘗試這樣? 「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