Извлечение даты и времени из поплавка в Python - PullRequest
18 голосов
/ 15 июля 2011

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

Например, у меня есть число с плавающей запятой, такое как 43111.0, и я хочу получить datetime для этого.

Ответы [ 4 ]

26 голосов
/ 15 июля 2011

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

>>> import datetime
>>> serial = 43111.0
>>> seconds = (serial - 25569) * 86400.0
>>> datetime.datetime.utcfromtimestamp(seconds)
datetime.datetime(2018, 1, 11, 0, 0)
9 голосов
/ 15 июля 2011
import datetime, time

print datetime.datetime.fromtimestamp(time.time())
print datetime.datetime.fromtimestamp(43111.0)
7 голосов
/ 15 июля 2011

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

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

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

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

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

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

6 голосов
/ 01 сентября 2017

Попробуйте это:

from datetime import datetime

datetime.fromtimestamp(*your_timestamp_here*).strftime('%Y-%m-%d')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...