2016-11-09 2 views
1

У меня есть данные гироскопа датчика, которые необходимо проанализировать вместе с отметками времени эпохи. Я хочу анализировать временные метки как формат 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 | 

Правильное время должно быть 20 июля 2014 16-20-31 GMT. Я использую python для преобразования временных меток с помощью библиотеки времени.

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

Чтобы добавить к моему вопросу, данные датчика записываются с использованием приложения для регистрации данных Cellbots. Временные метки записываются с использованием Sensorevent.Timestamp. Итак, я хотел знать, имеет ли временная метка какое-то отношение к этому методу.

+1

Как дела вы уверены, что это подходящее время? Я получаю это как 29 сентября 2005 года. – Prune

+0

Что вы знаете о временных отметках? Например, являются ли они микросекундами относительно эпохи GPS? Или они разные единицы, или разные эпохи? Без этой информации (или двух разных значений и соответствующих UTC раз) все просто догадки. –

ответ

1

Разделение на 10 ** 6, как вы делаете, дает 29 июля 1973. Разделение вместо этого на 10 ** 5 дает 29 сентября 2005 года. Если они должны быть представлены 20 июля 2014 года, тогда это не похоже на то, что эти цифры основаны в эпоху 1 января 1970 года.

-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

Кроме того, этот код дает 29 июля 1973 года. Деление на 100000 вместо этого дает 29 сентября 2005 года, что ближе, но все равно не сигары. –

1

Я думаю, что ключ к разгадке этой головоломки заключается в

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

Так это выглядит, как ваши метки времени с фиксированной точкой (48.16) секунд, прошедших с 1960-01-01.

Вы, вероятно, нужно использовать:

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

Я получил, что последний магическое число, вычисляя количество секунд между 1960-01-01 и 1970-01-01:

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

Есть еще небольшое несоответствие: это дает «17 июля 2014 года 16: 51: 41'. Может ли кто-нибудь объяснить эти три дня и завершить этот ответ? –

Смежные вопросы