Maison >développement back-end >Tutoriel Python >Comment convertir des chaînes datetime UTC en fuseaux horaires locaux en Python ?

Comment convertir des chaînes datetime UTC en fuseaux horaires locaux en Python ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-30 10:32:13496parcourir

How to Convert UTC Datetime Strings to Local Timezones in Python?

Conversion de chaînes de date et d'heure UTC en heures de date locales

Question :

Comment convertir un UTC chaîne datetime, stockée sous forme de chaîne dans Bigtable d'App Engine, dans une datetime au format correct de l'utilisateur final fuseau horaire ?

Réponse :

Pour convertir une chaîne datetime UTC en datetime dans le fuseau horaire correct de l'utilisateur, on peut utiliser la bibliothèque python-dateutil. Cette bibliothèque fournit des implémentations tzinfo au-dessus d'une base de données zoneinfo (Olson), permettant un référencement facile des règles de fuseau horaire par noms canoniques.

Implémentation :

from datetime import datetime
from dateutil import tz

# Hardcode zones:
from_zone = tz.gettz('UTC')
to_zone = tz.gettz('America/New_York')

# Auto-detect zones:
from_zone = tz.tzutc()
to_zone = tz.tzlocal()

# Create a datetime object from the UTC string
utc = datetime.strptime('2011-01-21 02:37:21', '%Y-%m-%d %H:%M:%S')

# Convert the datetime object to UTC timezone
utc = utc.replace(tzinfo=from_zone)

# Convert the datetime object to the user's timezone
local = utc.astimezone(to_zone)

Stockage recommandé pour le fuseau horaire Informations :

  • "-5:00" ou "EST": Cette méthode est simple mais limitée car elle suppose un décalage constant pour le fuseau horaire de l'utilisateur.
  • Noms canoniques : L'utilisation des noms canoniques de la base de données Olson est plus flexible et tient compte du fuseau horaire, car elle prend en compte l'historique. changements de fuseaux horaires. La bibliothèque python-dateutil permet de référencer les fuseaux horaires par noms canoniques.

Par exemple, "-5:00" peut être converti en "America/New_York" en utilisant :

import pytz
est = pytz.timezone("America/New_York")
est_name = est.zone

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