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
设备上送上来数据包的时间为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
相关文章推荐
- ViewPage配合FragmentPagerAdapter
- 从FTP服务器读取文件到本地
- 每天laravel-20160809| Container -12
- 每天laravel-20160809| Container -12
- PHP正则表达式入门教程(推荐)
- laravel 学习笔记 —— 神奇的服务容器
- laravel 学习笔记——视图
- laravel 学习笔记——请求与响应
- laravel 学习笔记——路由(路由与控制器)
- laravel 学习笔记——路由(中间件与路由组)
- 系统吞吐量、TPS(QPS)、用户并发量、性能测试概念和公式
- laravel 学习笔记——路由(基础)
- [转]系统吞吐量(TPS)、用户并发量、性能测试概念和公式---学习
- php常用函数集
- PHP 单链表
- PHP 堆栈和队列
- laravel 学习笔记——起点
- mysql的常用语句,php使用
- ThinkPHP关联模型操作
- yii2批量添加的问题