Преобразование часов с полуночи 1 января в фактическую дату - PullRequest
3 голосов
/ 01 августа 2020

Я работаю с некоторой телеметрией, которая использует временные метки, измеряемые в часах с 1 января в полночь текущего года.

Итак, я получаю значение 1 в момент времени 8668.12034

Я бы хотел чтобы преобразовать его в более удобный формат даты, и, конечно же, я делал это с помощью жестко запрограммированного математического деления на дни, оставшиеся часы, минуты и т. д. c с учетом високосных лет ... и это работает, но я уверен, что простой способ использовать библиотеку datetime или что-то еще?

Я думаю, timedelta - это путь к go, поскольку он дает мне дельту с начала года, но учитывает ли это високосные годы?

Интересно, как другие подойдут к этому вопросу, спасибо за любой совет.

1 Ответ

4 голосов
/ 01 августа 2020
# import packages we need
import datetime

От прошедших часов до объекта datetime.datetime

Например, вы можете сделать:

hours_elapsed = 1000
your_date = datetime.datetime(2020,1,1,0,0)+datetime.timedelta(hours=hours_elapsed)

(Конечно, измените hours_elapsed на количество часов, прошедших в вашем случае.)

your_date будет: datetime.datetime(2020, 2, 11, 16, 0)

Да, timedelta действительно знает о високосных годах.

Дальнейшая обработка

Если вы хотите обработать это дальше, можно сделать, используя getattr():

timeunits = ['year', 'month', 'day', 'hour', 'minute', 'second']
[getattr(your_date,timeunit) for timeunit in timeunits]

Результат:

[2020, 2, 11, 16, 0, 0]
...