Maison  >  Article  >  développement back-end  >  Comment convertir l'heure UTC en fuseau horaire local à l'aide de la bibliothèque standard de Python ?

Comment convertir l'heure UTC en fuseau horaire local à l'aide de la bibliothèque standard de Python ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-01 14:20:29672parcourir

How to Convert UTC Datetime to Local Timezone Using Python's Standard Library?

Convertir l'heure UTC en fuseau horaire local à l'aide de la bibliothèque standard

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.

Fuseau horaire local par défaut

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.

Utilisation datetime.astimezone()

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>

Utilisation du calendrier et de la datetime

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>

Exemple d'utilisation

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>

Conclusion

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn