Buscando datetime de float em Python

Como se obtém um datetime de um float no Python?

Por exemplo, eu tenho um flutuante como 43111.0 e eu quero obter o datetime para isso.

Parece um formato de data e hora do Excel, chamado data de série . Maneira rápida e suja de convertê-lo:

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

Então, com um pouco de matemática:

Se 43111 for 11 de janeiro de 2018, 0 será 30 de dezembro de 1899. O Python tem datetime.date.fromordinal()

Devolve a data correspondente ao ordinal gregoriano proléptico, em que 1 de janeiro do ano 1 tem o ordinal 1. O valor de ValueError é levantado, a menos que 1 <= ordinal <= date.max.toordinal (). Para qualquer data d, date.fromordinal (d.toordinal ()) == d.

Se você usar isso com um deslocamento, você tem:

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

Espero que ajude, mesmo que não funcione para carros alegóricos.

Tente isto:

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