Maison > développement back-end > Tutoriel Python > Comment convertir une chaîne datetime UTC en fuseau horaire local en Python ?

Comment convertir une chaîne datetime UTC en fuseau horaire local en Python ?

Patricia Arquette
Libérer: 2024-12-21 18:53:09
original
405 Les gens l'ont consulté

How to Convert a UTC Datetime String to Local Timezone in Python?

Conversion de la chaîne Datetime UTC en datetime locale

Les développeurs rencontrent souvent le besoin de convertir l'heure dans différents fuseaux horaires. Par exemple, une application Android peut envoyer des données d'horodatage à une application serveur, ce qui nécessite de stocker les données dans son système interne dans le fuseau horaire local correct. Cela implique de convertir l'horodatage UTC entrant en heure locale appropriée.

Défis de conversion

Les tentatives initiales de conversion de l'horodatage UTC en un objet datetime peuvent entraîner une heure incorrecte. compenser. Les objets datetime sous-jacents utilisés dans la programmation sont généralement « naïfs » par défaut, ce qui signifie qu'ils n'indiquent pas explicitement leur référence de fuseau horaire. Pour résoudre ce problème, les informations de fuseau horaire doivent être spécifiées explicitement.

Stockage recommandé pour les informations de fuseau horaire

Avant d'effectuer la conversion, il est important de stocker les informations de fuseau horaire préféré de l'utilisateur. . Il peut s'agir d'une représentation sous forme de chaîne (par exemple, "-5:00" pour EST) ou d'un nom canonique (par exemple, "America/New_York") conforme à la base de données Olson largement acceptée.

Utilisation la bibliothèque Python-dateutil

La bibliothèque Python-dateutil fournit des implémentations pratiques de tzinfo qui peuvent être utilisées pour gérer ces conversions facilement.

Voici un exemple illustrant la conversion :

# Import the necessary libraries
from datetime import datetime, strptime
from dateutil import tz

# Convert UTC datetime string to a datetime object with UTC timezone
utc_string = "2011-01-21 02:37:21"
utc_datetime = strptime(utc_string, '%Y-%m-%d %H:%M:%S')
utc_datetime = utc_datetime.replace(tzinfo=tz.tzutc())

# Create a timezone object for the desired local time
local_timezone = tz.gettz('America/New_York')

# Convert the UTC datetime object to the local timezone
local_datetime = utc_datetime.astimezone(local_timezone)

# Print the converted local datetime
print(local_datetime)
Copier après la connexion

Dans cet exemple, la chaîne utc_string est supposée être au format UTC et la conversion est effectuée dans le fuseau horaire Amérique/New_York. . Le local_datetime résultant sera ajusté en conséquence, en tenant compte des éventuels décalages horaires applicables et des règles d'heure d'été.

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!

source:php.cn
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