Maison >développement back-end >Tutoriel Python >Comment convertir des horodatages avec des décalages de fuseau horaire en objets DateTime en Python ?

Comment convertir des horodatages avec des décalages de fuseau horaire en objets DateTime en Python ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-29 19:37:11985parcourir

How to Convert Timestamps with Timezone Offsets to DateTime Objects in Python?

Convertir les horodatages avec décalage en objets Datetime à l'aide de strptime

Problème

Conversion des horodatages du format "2012-07-24T23:14:29- 07:00" vers les objets datetime utilisant strptime() peut être problématique en raison de l'heure décalage à la fin (-07:00). Sans le décalage, il est possible d'utiliser strptime() comme suit :

time_str = "2012-07-24T23:14:29"
time_obj = datetime.datetime.strptime(time_str, '%Y-%m-%dT%H:%M:%S')

Cependant, l'utilisation du décalage temporel fourni entraîne une ValueError car la directive 'z' n'est pas prise en charge.

Solutions de contournement

Il existe deux solutions de contournement principales :

1. Ignorer le fuseau horaire à l'aide de strptime() :

Supprimez la partie du fuseau horaire de l'horodatage avant l'analyse :

time_obj = datetime.datetime.strptime(time_str[:19], '%Y-%m-%dT%H:%M:%S')

2. Utilisez dateutil.parser :

Le module dateutil propose une fonction d'analyse qui prend en charge les fuseaux horaires :

from dateutil.parser import parse
time_obj = parse(time_str)

Python 3.2 et versions ultérieures

Pour les versions Python 3.2 et supérieures , la prise en charge des fuseaux horaires a été améliorée. %z fonctionnera après avoir ajusté la chaîne de format comme suit :

  • Supprimez les derniers deux-points de la chaîne de format.
  • Supprimez le '-' avant le spécificateur %z.
time_obj = datetime.datetime.strptime(time_str, '%Y-%m-%dT%H:%M:%S%z')

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