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)
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!