Qualcuno potrebbe dirmi come ottenere il datetime da float in python?Recupero datetime da float e viceversa in python
Per esempio, ho il numero float come diciamo 43111.0, ora voglio ottenere il datetime per questo.
Qualcuno potrebbe dirmi come ottenere il datetime da float in python?Recupero datetime da float e viceversa in python
Per esempio, ho il numero float come diciamo 43111.0, ora voglio ottenere il datetime per questo.
import datetime, time
print datetime.datetime.fromtimestamp(time.time())
print datetime.datetime.fromtimestamp(43111.0)
Grazie per la risposta, ma 43111.0 non è il timestamp, è il formato del numero di flaot per la data dell'11 gennaio 2018. – Pravin
Così, con un po 'di matematica:
Se 43111 è 11 Gennaio 2018, quindi 0 è 30 dicembre 1899. Python ha datetime.date.fromordinal()
Ritorna la data corrispondente al calendario Gregoriano prolettico ordinale, dove 1 ° gennaio dell'anno 1 ha ordinale 1. ValoreErrore viene generato a meno che 1 < = ordinale < = date.max.toordinal(). Per qualsiasi data d, date.fromordinal (d.toordinal()) == d.
Se si utilizza che con un offset, si dispone:
>>> dateoffset = 693594
>>> datetime.date.fromordinal(dateoffset + 43111)
datetime.date(2018, 1, 11)
Speranza che aiuta, anche se non funziona per i galleggianti.
Funziona su vecchi Python. ;) –
Se si utilizzano gli ordinali, si deve gestire separatamente la parte frazionaria :( – mlt
Sembra un formato datetime di Excel, denominato serial date. Veloce e modo sporco di convertirlo:
>>> import datetime
>>> serial = 43111.0
>>> seconds = (serial - 25569) * 86400.0
>>> datetime.datetime.utcfromtimestamp(seconds)
datetime.datetime(2018, 1, 11, 0, 0)
Secondo me, questo non è troppo sporco, dato che le date di Excel sono in realtà solo un timestamp con un diverso punto di partenza. 1) fromtimestamp() include informazioni sul fuso orario, che possono o non possono essere desiderabili (immagino che di solito non sia desiderabile - notate il 2, 0 alla fine del risultato) .Per eliminare questo, usate utcfromtimestamp(). 2) Questo metodo non può supportare date precedenti al 1970. –
Modificato la mia risposta per usare utcfromtimestamp() :) – tuomur
Prova questa:
from datetime import datetime
datetime.fromtimestamp(*your_timestamp_here*).strftime('%Y-%m-%d')
Cos'è 43.111,0 dovrebbe essere? È un qualche strano timestamp non standard? – Jacob
43111 è il formato numerico per la data dell'11 gennaio 2018. – Pravin
Hai una specifica o qualcosa del genere? – Jacob