Извлечение даты и времени из поплавка в Python

Как можно получить datetime из float в Python?

Для, например, у меня есть поплавок, такие как 43111.0, и я хочу, чтобы получить datetime для этого.

Ответ 1

Выглядит как формат даты и времени Excel, называемый серийной датой. Быстрый и грязный способ конвертировать его:

>>> import datetime
>>> serial = 43111.0
>>> seconds = (serial - 25569) * 86400.0
>>> datetime.datetime.utcfromtimestamp(seconds)
datetime.datetime(2018, 1, 11, 0, 0)

Ответ 2

Итак, с небольшой математикой:

Если 43111 - 11 января 2018 года, то 0 - 30 декабря 1899 года. Python имеет datetime.date.fromordinal()

Верните дату, соответствующую прорептическому григорианскому порядку, где 1 января года 1 имеет порядковый номер 1. ValueError поднимается, если только 1 <= ординал <= date.max.toordinal(). Для любой даты d, date.fromordinal(d.toordinal()) == d.

Если вы используете это со смещением, у вас есть:

>>> dateoffset = 693594
>>> datetime.date.fromordinal(dateoffset + 43111)
datetime.date(2018, 1, 11)

Надеюсь, что это поможет, даже если оно не работает для поплавков.

Ответ 3

import datetime, time

print datetime.datetime.fromtimestamp(time.time())
print datetime.datetime.fromtimestamp(43111.0)

Ответ 4

Попробуйте следующее:

from datetime import datetime

datetime.fromtimestamp(*your_timestamp_here*).strftime('%Y-%m-%d')