Conversion de la date/heure UTC en date-heure locale à l'aide de la bibliothèque standard Python
Lorsque vous traitez des objets datetime, il est souvent nécessaire de convertir entre UTC (coordonné Temps universel) et l’heure locale. La bibliothèque standard Python fournit des fonctionnalités intégrées pour accomplir cela.
Alternative pytz pour Python 3.3
Dans Python 3.3 et supérieur, le module de fuseau horaire simplifie le processus de conversion :
<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>
Solution pour Python 2/3
Pour Python 2 et 3, une approche alternative consiste à utiliser calendrier.timegm et datetime.fromtimestamp :
<code class="python">import calendar from datetime import datetime, timedelta def utc_to_local(utc_dt): 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
Pour illustrer la conversion, considérons l'exemple suivant :
<code class="python">from datetime import datetime utc_dt = datetime(2023, 7, 18, 12, 0, 0, tzinfo=timezone.utc) local_dt = utc_to_local(utc_dt) print(local_dt)</code>
Sortie :
2023-07-18 18:00:00.000000+06:00
Remarque pour DateTime sans résolution en microsecondes
Dans les cas où la date/heure UTC n'a pas de résolution en microsecondes, la méthode astimezone peut introduire des valeurs en microsecondes qui ne sont pas présentes dans la date/heure d'origine. Pour garantir la précision, utilisez la méthode alternative fournie pour Python 2/3.
Gestion des modifications d'heure d'été
Les deux solutions prennent en compte les modifications de l'heure d'été (DST) et correctement convertissez la date/heure UTC en heure locale appropriée avec l'heure d'été appliquée ou supprimée selon les besoins.
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!