Convertir UTC en CST en Python

Vaibhhav Khetarpal 10 octobre 2023
  1. Utilisez le module dateutil.tz pour convertir la date et l’heure d’UTC en CST en Python
  2. Utilisez le module pytz pour convertir la date et l’heure d’UTC en CST en Python
  3. Utilisez le module zoneinfo pour convertir la date et l’heure d’UTC en CST en Python
Convertir UTC en CST en Python

Python stocke la date et l’heure d’une manière très sophistiquée. Il a un type de données spécifiquement pour stocker ce type de données. De plus, Python fournit également un module datetime qui propose plusieurs classes pour manipuler la date et l’heure.

La conversion en différents fuseaux horaires est une partie essentielle de la manipulation de la date et de l’heure. Dans cet article, nous discuterons de deux de ces fuseaux horaires, à savoir UTC et CST, et des différentes façons disponibles pour convertir le premier en ce dernier.

Le module datetime est une nécessité et devra être importé et utilisé dans toutes les méthodes mentionnées dans l’article ci-dessous.

Utilisez le module dateutil.tz pour convertir la date et l’heure d’UTC en CST en Python

Le module dateutil alimente le module datetime standard en fournissant des extensions importantes. Le module dateutil.tz fournit des implémentations de fuseau horaire qui sous-classent le type abstrait datetime.tzinfo.

Ici, nous utiliserons fréquemment la fonction tz.gettz(), qui récupère essentiellement un objet du fuseau horaire à partir de la chaîne donnée passée en argument.

Le code suivant utilise le module dateutil.tz pour convertir la date et l’heure de UTC en CST en python.

import datetime
from dateutil import tz

from_zone = tz.gettz("UTC")
to_zone = tz.gettz("America/Chicago")
json_data = {"time": "2021-10-08T08:17:42Z"}
utc = datetime.datetime.strptime(json_data["time"], "%Y-%m-%dT%H:%M:%SZ")
utc = utc.replace(tzinfo=from_zone)
cst = utc.astimezone(to_zone)
print(utc)
print(cst)

Le code ci-dessus fournit la sortie suivante :

2021-10-08 08:17:42+00:00
2021-10-08 03:17:42-05:00

Utilisez le module pytz pour convertir la date et l’heure d’UTC en CST en Python

Le module pytz prend en charge une grande majorité de fuseaux horaires, ce qui en fait le module parfait pour fournir des fonctionnalités de conversion de date et d’heure et fournir des fonctions qui permettent des calculs simples de fuseau horaire dans le logiciel d’application python du programmeur.

De plus, le module pytz permet la création d’objets ou d’instances datetime intelligents qui connaissent leur fuseau horaire. Le module pytz doit être installé manuellement et peut être fait en utilisant la commande pip.

Le code suivant utilise le module pytz pour convertir la date et l’heure de UTC en CST en Python

from datetime import datetime, timezone
import pytz

fmt = "%Y-%m-%d %H:%M:%S %Z%z"
e = pytz.timezone("US/Central")

time_from_utc = datetime.fromtimestamp(1607020200, tz=timezone.utc)
time_from = time_from_utc.astimezone(e)
time_from.strftime(fmt)
time_to_utc = datetime.fromtimestamp(1609785000, tz=timezone.utc)
time_to = time_to_utc.astimezone(tz=pytz.timezone("US/Central"))
print(time_to_utc)
print(time_to)

Le code ci-dessus fournit la sortie suivante :

2021-01-04 18:30:10+00:00
2021-01-04 12:30:10-06:00

Bien que les modules dateutil.tz et pytz soient tous deux utilisés pour implémenter des choses similaires en Python, ils présentent quelques différences.

  • Le module pytz supporte quasiment tous les fuseaux horaires, nettement plus que ce que propose le module dateutil.tz.
  • La librairie du module pytz est nettement plus optimisée.
  • Le module pytz est historiquement plus rapide que dateutil.tz, mais l’écart s’est réduit au cours des deux dernières mises à jour.
  • L’utilisation du module dateutil.tz est recommandée dans les versions antérieures de Python lorsque le module pytz n’était pas assez stable.

Utilisez le module zoneinfo pour convertir la date et l’heure d’UTC en CST en Python

Avec l’introduction de Python 3.9 est venu le module zoneinfo, qui a éliminé le besoin d’installer d’autres bibliothèques tierces pour gérer les fuseaux horaires. Le module zoneinfo s’occupe de tout lui-même.

Le module zoneinfo est utilisé pour fournir une implémentation de fuseau horaire fort qui, comme spécifié dans PEP 615, peut prendre en charge la base de données de fuseau horaire IANA.

Le code suivant utilise le module zoneinfo pour convertir la date et l’heure de UTC en CST en Python.

# >= Python 3.9
from datetime import datetime
from zoneinfo import ZoneInfo

naive_datetime = datetime(2021, 10, 8, 12, 0, 0)
user_tz_preference = ZoneInfo("US/Central")

user_datetime = naive_datetime.replace(tzinfo=user_tz_preference)
user_datetime = datetime(2011, 10, 26, 12, tzinfo=ZoneInfo("US/Central"))
utc_datetime = user_datetime.astimezone(ZoneInfo("UTC"))
print(user_datetime.isoformat())
print(utc_datetime.isoformat())

Le code ci-dessus fournit la sortie suivante :

# 2021-10-08T12:00:00-06:00
# 2021-10-08T19:00:00+00:00
Vaibhhav Khetarpal avatar Vaibhhav Khetarpal avatar

Vaibhhav is an IT professional who has a strong-hold in Python programming and various projects under his belt. He has an eagerness to discover new things and is a quick learner.

LinkedIn

Article connexe - Python DateTime