将EPOCH时间戳转换为日期

问题描述:

我有要与历元时间戳一起分析的传感器陀螺仪数据。我想分析时间戳为HH-MM-SS格式。所以,当我尝试转换时间戳时,结果时间不正确。以下是需要考虑的值。将EPOCH时间戳转换为日期

| Time   | Gyro_X  | Gyro_Y  | Gyro_Z  | 
|-----------------|--------------|-------------|---------------| 
| 112802627681000 | 0.09686792 | 0.14810029 | 0.005777027 | 
| 112802636065000 | 0.029674599 | 0.10087131 | 2.1168962E-5 | 
| 112802636868000 | 0.029674599 | 0.10087131 | 2.1168962E-5 | 
| 112802645721000 | -0.019805614 | 0.028886953 | -0.007304834 | 
| 112802646541000 | -0.019805614 | 0.028886953 | -0.007304834 | 
| 112802655003000 | -0.030801188 | -0.0493038, | -0.0048613725 | 
| 112802656170000 | -0.030801188 | -0.0493038 | -0.0048613725 | 

正确的时间必须是2014年7月20日16-20-31 GMT。我正在使用python转换时间库的帮助下的时间戳。

import time 
y=time.strftime('%m/%d/%Y %H:%M:%S', time.gmtime(112802646541000/1000000)) 

添加到我的问题传感器数据正在使用cellbots数据记录器应用程序进行记录。时间戳记使用Sensorevent.Timestamp进行记录。所以,我想知道时间戳是否与这种方法有关。

+1

是如何你确定这是正确的时间?我知道这是2005年9月29日。 – Prune

+0

你知道什么时间戳?例如,他们相对于GPS时代的微秒?或者他们是不同的单位,还是不同的时代?如果没有这些信息(或两个不同的值,并有相应的UTC时间),一切都只是猜测。 –

按照你所做的事情划分为10 ** 6给出1973年7月29日。用10 ** 5划分给出2005年9月29日。如果他们应该代表2014年7月20日,那么它看起来不像这些数字是基于在1970年1月1日的时代。

import pytz, datetime 
s = 112802646541000/1000000 
print(datetime.datetime.fromtimestamp(s).strftime('%d %B %Y %H:%M:%S')) 
+1

尽管这段代码可能会解决这个问题,包括一个解释[真的有帮助](// meta.stackexchange.com/q/114762)来提高您的帖子的质量。请记住,你正在为将来的读者回答这个问题,而不仅仅是现在问的人!请编辑您的答案以添加解释,并指出适用的限制和假设。 –

+0

此外,该守则于1973年7月29日颁布。除以100000而非2005年9月29日,该守则更接近,但仍然没有雪茄。 –

我认为一个线索这一难题在于

$ date -u -d "@$((112802627681000/65536))" 
Wed 17 Jul 15:51:41 UTC 2024 

因此,它看起来像你的时间戳固定点(48.16)秒自1960年1月1日。

您可能需要使用:

datetime.datetime.fromtimestamp(s/65536 - 315619200) 

我得到的最后一个幻数,通过计算1960年1月1日和1970-01-01之间的秒数:

$ date -u -d 1960-01-01 +%s 
-315619200 
+0

还是有一点小小的差异,那就是'2014年7月17日16:51:41'。任何人都可以解释这三天,并完成这个答案? –