NTP时间转换



NTP时间转换,百度了很久没有结果。自己试了一下可以了。
设备上送上来数据包的时间为NTP格式,wireshark中抓包原始数据为:
DAE5 D0 E5


1、通过struct.unpack,转化为整型:
s4=struct.unpack(‘4B’,buf[0][102:106])
结果如下:218229208 229



2、每个整型转换为16进制的字符串,并拼接起来,结果如下:
t1=str(hex(s4[0]))
Temp=’0xda0xe50xd00xe5’
通过temp=temp.replace(‘0x’,’’),删除‘0x’,结果如下:
‘dae5d0e5’


3、转化为10进制数据,
Timestamp = int(temp,16)
结果:3672494309


4、通过datetime的函数,转换为datetime
dateArray = datetime.datetime.utcfromtimestamp(timestamp)


5、上述时间上,年还需要减去70(NTP时间从1900/1/1 00:00:00开始算,而utc时间从1970年开始算)
Con_time =datetime.datetime(dateArray-70,dateArray.month,dateArray.day,
dateArray.hour,dateArray.minute,dateArray.second)
最终获得设备时间:2016.5.17 17:18:29

【NTP时间转换】

    推荐阅读