Skip to content

Convertir le temps Unix (Epoch time) en datetime en Python

Cet article décrit comment convertir entre l’heure Unix (Epoch time) et l’objet datetime, qui représente les dates et les heures en Python.

  • Qu’est-ce que l’heure Unix (Epoch time, Posix time) ?
  • Convertir l’heure Unix (Epoch time) en datetime :fromtimestamp()
  • Convertir la date et l’heure en heure Unix (heure d’époque) :timestamp()

L’heure Unix (également connue sous le nom d’Epoch time, Posix time) est le nombre de secondes qui se sont écoulées depuis l’époque Unix, 00:00:00 UTC (Coordinated Universal Time) le 1er janvier 1970.

L’heure Unix est également utilisée pour représenter les horodatages des fichiers (dates de création et de modification). Pour plus d’informations, consultez l’article suivant.

Qu’est-ce que l’heure Unix (Epoch time, Posix time) ?

L’heure Unix est le nombre de secondes qui se sont écoulées depuis l’époque Unix, 00:00:00 UTC (Coordinated Universal Time) le 1er janvier 1970. Il est également connu sous le nom d’Epoch time, Posix time, etc.

L’heure Unix (également appelée heure d’époque, heure Posix, secondes depuis l’époque ou heure d’époque UNIX) est un système permettant de décrire un point dans le temps. C’est le nombre de secondes qui se sont écoulées depuis l’époque Unix, à l’exclusion des secondes intercalaires. L’époque Unix est 00:00:00 UTC le 1er janvier 1970 (une date arbitraire).
Heure Unix — Wikipédia

Convertir l’heure Unix (Epoch time) en datetime :fromtimestamp()

Pour manipuler les dates et les heures en Python, vous pouvez utiliser le module datetime.

Utilisez datetime.fromtimestamp() du module datetime pour convertir l’heure Unix (heure d’époque) en objet datetime. Spécifiez l’heure Unix comme argument.

Par défaut, il est converti à la date et à l’heure locales. Par exemple, si vous exécutez le programme sur une machine avec l’environnement Japan Standard Time (JST), le décalage horaire (+9 heures) est pris en compte.

Si 0 est spécifié comme argument :

import datetime

dt = datetime.datetime.fromtimestamp(0)

print(dt)
# 1970-01-01 09:00:00

print(type(dt))
# <class 'datetime.datetime'>

print(dt.tzinfo)
# None

Par défaut, les objets datetime naïfs avec l’attribut tzinfo défini sur None sont renvoyés.

Si vous spécifiez un fuseau horaire pour le deuxième argument tz, l’attribut tzinfo est défini et un objet datetime averti est renvoyé avec la date et l’heure correctement converties dans ce fuseau horaire.

dt_utc_aware = datetime.datetime.fromtimestamp(0, datetime.timezone.utc)

print(dt_utc_aware)
# 1970-01-01 00:00:00+00:00

print(dt_utc_aware.tzinfo)
# UTC

dt_jst_aware = datetime.datetime.fromtimestamp(0, datetime.timezone(datetime.timedelta(hours=9)))

print(dt_jst_aware)
# 1970-01-01 09:00:00+09:00

print(dt_jst_aware.tzinfo)
# UTC+09:00

datetime.utcfromtimestamp() qui renvoie un objet datetime naïf en UTC (= l’attribut tzinfo est None) est également fourni.

dt_utc_naive = datetime.datetime.utcfromtimestamp(0)

print(dt_utc_naive)
# 1970-01-01 00:00:00

print(dt_utc_naive.tzinfo)
# None

Convertir la date et l’heure en heure Unix (heure d’époque) :timestamp()

Utilisez la méthode timestamp() pour convertir un objet datetime en heure Unix (Epoch time). L’heure Unix est renvoyée sous la forme d’un nombre à virgule flottante float.

Utilisez l’objet datetime créé par l’exemple de code ci-dessus comme exemple.

print(dt)
# 1970-01-01 09:00:00

print(dt.timestamp())
# 0.0

print(type(dt.timestamp()))
# <class 'float'>

Les objets naïfs avec l’attribut tzinfo défini sur Aucun sont convertis en fonction du fuseau horaire de l’environnement d’exécution, et les objets conscients avec l’attribut tzinfo sont convertis en fonction de leur fuseau horaire.

Notez que l’objet créé par utcfromtimestamp() est naïf en UTC (l’attribut tzinfo vaut None), donc le résultat est différent des autres objets.

print(dt_utc_aware)
# 1970-01-01 00:00:00+00:00

print(dt_utc_aware.timestamp())
# 0.0

print(dt_jst_aware)
# 1970-01-01 09:00:00+09:00

print(dt_jst_aware.timestamp())
# 0.0

print(dt_utc_naive)
# 1970-01-01 00:00:00

print(dt_utc_naive.timestamp())
# -32400.0

Si vous n’avez pas besoin de prendre en compte le fuseau horaire, vous n’avez pas à vous en soucier car fromtimestamp() et timestamp() sont convertis en fonction de l’heure locale de la machine.