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
Libérer: 2024-11-30 10:32:13
original
494 Les gens l'ont consulté

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)
Copier après la connexion

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
Copier après la connexion

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 de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal