datetime.datetime.fromtimestamp()
est correcte, sauf que vous avez probablement un timestamp en milisecondes (comme en JavaScript), mais fromtimestamp()
attend un timestamp Unix, en secondes.
Fais-le comme ça :
>>> import datetime
>>> your_timestamp = 1331856000000
>>> date = datetime.datetime.fromtimestamp(your_timestamp / 1e3)
et le résultat est :
>>> date
datetime.datetime(2012, 3, 16, 1, 0)
Cela répond-il à votre question ?
EDIT : J.F. Sebastian a correctement suggéré à utiliser la division réelle par 1e3
(float 1000
). La différence est significative, si vous souhaitez obtenir des résultats précis, c'est pourquoi j'ai modifié ma réponse. La différence résulte du comportement par défaut de Python 2.x, qui renvoie toujours int
en divisant (en utilisant /
opérateur) int
par int
(cela s'appelle division du plancher ). En remplaçant le diviseur 1000
(étant un int
) avec le 1e3
diviseur (étant la représentation de 1000
comme flotteur) ou avec float(1000)
(ou 1000.
etc.), la division devient véritable division . Retour de Python 2.x float
en divisant int
par float
, float
par int
, float
par float
etc. Et quand il y a une partie fractionnaire dans l'horodatage transmis à fromtimestamp()
le résultat de cette méthode contient également des informations sur cette partie fractionnaire (sous forme de nombre de microsecondes).