Maison >développement back-end >Tutoriel Python >Comment puis-je convertir des chaînes d'heure locale en UTC à l'aide de Python ?

Comment puis-je convertir des chaînes d'heure locale en UTC à l'aide de Python ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-30 22:56:22994parcourir

How Can I Convert Local Time Strings to UTC Using Python?

Conversion de chaînes d'heure locale en UTC

La conversion d'une chaîne d'heure locale en chaîne d'heure UTC peut être une tâche complexe, car les fuseaux horaires et la lumière du jour Le gain de temps (DST) peut introduire une ambiguïté. Cet article fournit une explication détaillée de la façon de réaliser cette conversion à l'aide des modules datetime et pytz.

Étapes :

  1. Analyser la chaîne d'heure locale :
    Utilisez la fonction datetime.datetime.strptime() pour analyser la chaîne en tant qu'objet datetime naïf sans fuseau horaire informations.
  2. Vérifiez le fuseau horaire local :
    Déterminez le fuseau horaire local en interrogeant le système ou en utilisant la fonction pytz.timezone().
  3. Construisez un objet de fuseau horaire localisé :
    Créez un objet de fuseau horaire à partir du fuseau horaire local à l'aide de pytz.timezone() function.
  4. Attacher le fuseau horaire local à datetime :
    Appelez la fonction pytz.localize() pour attacher le fuseau horaire local à la datetime naïve, ce qui donne un objet datetime localisé.
  5. Convertir en UTC :
    Utilisez la méthode astimezone() sur la date/heure localisée pour convertir au format UTC.
  6. Formater l'heure UTC :
    Appliquez la méthode strftime() sur la date/heure UTC pour la formater sous forme de chaîne au format souhaité.

Exemple :

L'exemple suivant convertit la chaîne d'heure locale "2001-2-3 10:11:12" dans le fuseau horaire "America/Los_Angeles" vers son heure UTC équivalente :

from datetime import datetime   
import pytz

local = pytz.timezone("America/Los_Angeles")
naive = datetime.strptime("2001-2-3 10:11:12", "%Y-%m-%d %H:%M:%S")
local_dt = local.localize(naive, is_dst=None)
utc_dt = local_dt.astimezone(pytz.utc)

print(utc_dt.strftime("%Y-%m-%d %H:%M:%S"))

Cela affichera : "2001-02-03 02:11:12 ".

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