国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

NTP時間戳轉換成UTC時間的過程

Atom / 2254人閱讀

摘要:時間,格林威治時間年月日北京時間年月日起至現在的總秒數,表示為。協議中有四個時間戳,本文不討論這四個時間戳的區別,只簡單的拿其中一個時間戳報文分析如何轉換成時間。例如一段時間戳報文為,下面我們一起學習該時間戳是如何轉換成時間的。

? ? ? ? 前言:最近在學習時頻產品時鐘對時協議,在學習NTP協議時一直對協議報文中的時間戳轉換存在疑問,通過各種搜集資料、自我理解后終于對NTP時間戳有了一個具體的認識;發現現階段網上的免費資料里對整個轉換沒有寫的很仔細,導致理解比較難,接下來我針對我學習后的理解,詳細地講一下NTP時間戳是如何轉換成UTC時間的。(若有不對的地方,歡迎指出,共同進步)

? ? ? ? 正文:

? ? ? ? 首先簡單講一下NTP協議,相信搜到這篇文章的對NTP是有一定了解的,想進一步對NTP中某些字段定義學習深入一點。NTP(Network Time Protocol)網絡時間協議基于UDP,用于網絡時間同步的協議,使網絡中的計算機時鐘同步到UTC,再配合各個時區的偏移調整就能實現精準同步對時功能。

? ? ? ?在理解轉換之前先講一個NTP時間戳和UTC時間的定義(注意兩種時間戳的起始時間不同,相差70年):

①NTP時間戳用一個64bit無符號定點數表示,它表示自從1990年1月1日00:00:00到現在過了多少秒。64bit分為兩部分,高32bit(MSW)表示整數部分,單位是秒;低32bit(LSW)表示小數部分,單位是232皮秒。

②UTC時間,格林威治時間1970年1月1日00:00:00(北京時間1970年1月1日08:00:00)起至現在的總秒數,表示為1970-01-01 00:00:00 UTC。程序里習慣叫做UTC時間戳。

? ? ? ? NTP協議中有四個時間戳,本文不討論這四個時間戳的區別,只簡單的拿其中一個NTP時間戳報文分析如何轉換成UTC時間。例如一段時間戳報文為“D9 FD 84 95 94 F8 59 7C”,下面我們一起學習該NTP時間戳是如何轉換成UTC時間的。

? ? ? ? 先處理MSW高位32bit“D9 FD 84 95”,將其轉換為10進制3657270421,由于NTP時間和UTC時間起始不同,需要將該時間減少70年(1900年到1970年)2208988800(0x83AA7E80),則為1448281621,使用UTC轉換器為2015-11-23 12:27:01 UTC(格林威治時間),2015-11-23 20:27:01 UTC+8(北京時間 UTC+8)

? ? ? ? 然后再處理LSW低位32bit“94 F8 59 7C”,在處理LSW之前先要了解1LSW=232ps是怎么來的,1 second =1,000,000,000,000 picoseconds,這個值很大,而2^32=4294967296,很明顯用32bit無法精確到1?picoseconds,那就盡力而為,于是自然就把1,000,000,000,000 picoseconds劈成2^32份:

1,000,000,000,000/(2^32) = 232.83064365386962890625? ? 即1LSW=232ps

? ? ? ? 故先將LSW乘以232轉為ps,然后ps除以10^6就得到us了,于是有:usec=lsw*232/1000000

? ? ? ? 再看看秒的一些時間單位轉換:

毫秒ms是10^-3秒;微妙us是10^-6秒;納秒ns是10^-9秒;皮秒ps是10^-12秒

? ? ? ? 于是低位32bit“94 F8 59 7C”,將其轉換為10進制2499303804,則:

usec=lsw*232/1000000=579838us=0.579838s

? ? ? ? 綜上所述,故NTP時間戳“D9 FD 84 95 94 F8 59 7C”轉換成UTC時間為2015-11-23 20:27:01.579838 UTC+8(北京時間)

?寫在最后的話:整理不易,若對你有幫助望支持點贊一下,謝謝。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/119230.html

相關文章

  • Javascript中時間

    摘要:比如中國,從西到東橫跨東五東六東七東八和東九五個時區,中華人民共和國成立以后,全國統一采用首都北京所在的東八時區的區時作為標準時間,稱為北京時間。全球所有國家根據時間和各自國家所在的時區確定當地時間,以此來保證全球時間的低誤差同步。 我們在編程時,不可避免地會和時間打交道。 比如要完成一次秒殺活動, 就會涉及到時間存取,時間同步和時間差值計算等諸多細節。一個JavsScript的簡單例...

    MageekChiu 評論0 收藏0
  • Python time模塊參考手冊

    摘要:的模塊提供了各種操作時間的功能。模塊變量當地時間與標準時間的誤差,以秒計當地夏令時時間與標準時間的誤差,以秒計當地時間是否反映夏令時,默認為關于標準時區名稱夏令時時區名稱的元組模塊方法將時間元組默認為本地時間格式轉換為字符串形式。 Python的time模塊提供了各種操作時間的功能。在大多數的編程語言中,表示時間的方法有兩種,一是時間戳。即從1970年1月1日00:00:00開始按秒計...

    王晗 評論0 收藏0
  • JavaScript 時間與日期處理實戰:你肯定被坑過

    摘要:本文時間與日期處理實戰你肯定被坑過從屬于筆者的前端入門與最佳實踐中入門與最佳實踐系列文章。然而由于地球的不規則自轉,導致時間有誤差,因此目前已不被當作標準時間使用。而在航空上,所有使用的時間劃一規定是協調世界時。 本部分的知識圖譜請參考編程語言知識圖譜-時間與日期。showImg(https://segmentfault.com/img/remote/1460000007581725...

    ninefive 評論0 收藏0

發表評論

0條評論

Atom

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<