我正在尝试与使用时间戳的API进行交互,时间戳的启动时间与UNIX时代不同。它似乎开始计算2000-01-01,但我不确定如何进行转换,也不知道这个日期时间格式的名称是什么。
当我在1456979510发送一条信息时,我收到回复说它是在510294713接收到的。
两者之间的差异是946684796秒(有时是946684797),大约是30年。
有人能让我知道在两者之间转换的正确方法吗?还是我是否可以在Python中直接生成它们?
谢谢
编辑
我应该提到的另一个细节是,这是Zigbee设备的API。我在他们的文档中找到了以下数据类型条目:
1.3.2.7绝对时间 这是一个无符号的32位整数表示的绝对时间.绝对时间以秒为单位,从2000年1月1日午夜开始。
我仍然不确定这两者之间最简单的转换方式
发布于 2016-03-03 05:10:30
时间1 1970年1月1日00:00:00被视为UNIX时代。因此,如果要将UNIX时间转换为具有2000年1月1日(假设是2000年纪元)的时间戳,最简单的方法是从UNIX时间减去2000年1月1日的UNIX时间。
<2000 time> = <UNIX time> - <January 1, 2000 UNIX time>
<UNIX time> = <2000 time> + <January 1, 2000 UNIX time>
其中,2000年1月1日UNIX时间是946684800。
编辑:文档确实说
绝对时间以秒为单位,从2000年1月1日午夜开始。
因此,946684800
是应该用来计算的精确时差。您计算的几秒差可归因于网络延迟或其他一些延迟。
发布于 2016-03-03 04:59:14
编辑:OP添加了详细信息,指定时间从午夜开始,因此它与中午开始的J2000完全不同。但由于标题是“时间戳从2000年1月1日开始”,我让这个答案是为未来的答案寻求者。
答案:
您提到的时间戳似乎是J2000.0提到的这里
因为Unix和J2000是常量,所以可以定义一个常量来存储差异。
如果你有数学倾向,下面的链接提供了一些关于转换的信息
#define
部分包含以下内容
#define J2000 2451545.0 /* you-know-when */
#define U1970 -10957.5 /* unix epoch relative to J2000 */
发布于 2016-03-03 05:10:02
在2000-01-01T00:00:00Z和1970-01-01T00:00:00Z之间有946684800秒。因此,您可以为946684800
设置一个常量,并从Unix时间戳中添加或减去。
您在数字中看到的变化与发送和接收数据的延迟有关,也可能是由于时钟同步或缺少时钟同步所致。因为这些是整秒,你的数字是3到4秒,那么我猜你的电脑和你的设备之间的时钟也是3到4秒不同步的。
https://stackoverflow.com/questions/35763357
复制相似问题