Lorsque vous travaillez avec des dates et heures, il est souvent nécessaire d'effectuer une conversion entre différents fuseaux horaires, en particulier lors de la récupération et de l'affichage de données persistantes. Cet article montre comment convertir une date/heure UTC en date/heure locale en utilisant uniquement la bibliothèque standard Python, offrant plusieurs solutions pour Python 2 et 3.
Pour convertir une date/heure UTC en une date/heure locale, nous devons connaître le fuseau horaire local par défaut. Malheureusement, Python ne fournit pas de méthode simple pour récupérer ces informations. Cependant, nous pouvons créer et utiliser un objet timezone pour le représenter.
Dans Python 3.3, nous pouvons utiliser la méthode datetime.astimezone(tz) pour convertir le datetime vers un fuseau horaire local. Cependant, nous devons toujours obtenir le fuseau horaire local par défaut, ce que nous pouvons obtenir en utilisant timezone.utc.
<code class="python">from datetime import datetime, timezone def utc_to_local(utc_dt): return utc_dt.replace(tzinfo=timezone.utc).astimezone(tz=None)</code>
En Python 2/3, où datetime.astimezone () n'est pas disponible, nous pouvons utiliser l'approche suivante :
<code class="python">import calendar from datetime import datetime, timedelta def utc_to_local(utc_dt): # get integer timestamp to avoid precision lost timestamp = calendar.timegm(utc_dt.timetuple()) local_dt = datetime.fromtimestamp(timestamp) assert utc_dt.resolution >= timedelta(microseconds=1) return local_dt.replace(microsecond=utc_dt.microsecond)</code>
Voici un exemple d'utilisation de la fonction utc_to_local() avec une fonction de formatage personnalisée :
<code class="python">from datetime import datetime def aslocaltimestr(utc_dt): return utc_to_local(utc_dt).strftime('%Y-%m-%d %H:%M:%S.%f %Z%z') utc_dt1 = datetime(2010, 6, 6, 17, 29, 7, 730000) utc_dt2 = datetime(2010, 12, 6, 17, 29, 7, 730000) utc_dt3 = datetime.utcnow() print(aslocaltimestr(utc_dt1)) print(aslocaltimestr(utc_dt2)) print(aslocaltimestr(utc_dt3))</code>
La conversion d'une date/heure UTC en une date/heure locale en utilisant uniquement la bibliothèque standard de Python implique soit de créer un objet de fuseau horaire, soit d'utiliser une approche plus complexe impliquant des opérations de calendrier et de date/heure. Bien que l'utilisation de pytz ou tzlocal soit plus pratique, ces solutions démontrent la flexibilité de la bibliothèque standard de Python pour gérer les conversions datetime sans dépendances externes.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!