您的位置:首页 > 编程语言 > PHP开发

NTP时间转换

2016-05-18 10:02 645 查看
      NTP时间转换,百度了很久没有结果。自己试了一下可以了。

      设备上送上来数据包的时间为NTP格式,wireshark中抓包原始数据为:

      DA  E5 D0 E5

     1、通过struct.unpack,转化为整型:

     s4=struct.unpack(‘4B’,buf[0][102:106])

     结果如下:218  229  208 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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: