datetime.datetime.fromtimestamp()
est correct, sauf que vous avez probablement un horodatage en millisecondes (comme en JavaScript), mais fromtimestamp()
attend un horodatage Unix, en secondes.
Faites-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 : JF Sebastian a correctement suggéré d' utiliser la vraie division par 1e3
(float 1000
). La différence est significative, si vous souhaitez obtenir des résultats précis, j'ai donc changé de réponse. La différence résulte du comportement par défaut de Python 2.x, qui renvoie toujours int
lors de la division (à l'aide de l' /
opérateur) int
par int
(c'est ce qu'on appelle la division par étage ). En remplaçant le diviseur 1000
(étant un int
) par le 1e3
diviseur (étant une représentation de 1000
comme float) ou par float(1000)
(ou 1000.
etc.), la division devient une vraie division . Python 2.x retourne float
lors de la division int
par float
, float
par int
,float
par float
etc. Et quand il y a une partie fractionnaire dans l'horodatage passé à la fromtimestamp()
méthode, le résultat de cette méthode contient également des informations sur cette partie fractionnaire (en nombre de microsecondes).
/ 1e3
x * 0.001
etx / 1e3
sont tous les deux identiques, la différence réside dans la notation et la longueur (celle d'origine est plus courte). Pour certaines personnes, il peut être plus clair de diviser par le nombre au lieu de multiplier par le nombre inverse multiplicatif (1/x
), que vous avez proposé. Mais merci d'avoir proposé une approche alternative.fromtimestamp
vous donne la date et l'heure en heure localeutcfromtimestamp
vous donne la date et l'heure en UTC.