Maison  >  Article  >  développement back-end  >  Comment puis-je convertir un objet Datetime naïf en un objet prenant en compte le fuseau horaire en Python ?

Comment puis-je convertir un objet Datetime naïf en un objet prenant en compte le fuseau horaire en Python ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-25 20:18:11214parcourir

How Can I Convert a Naive Datetime Object to a Timezone-Aware Object in Python?

Conversion d'un objet datetime naïf en fuseau horaire sensible

En Python, les objets datetime peuvent être soit sensibles au fuseau horaire, soit naïfs du fuseau horaire. Un objet datetime prenant en compte le fuseau horaire inclut une référence à un fuseau horaire spécifique, contrairement à un objet datetime naïf de fuseau horaire.

Lorsque vous comparez des objets datetime prenant en compte le fuseau horaire et naïfs de fuseau horaire, il est important de comprendre ce qui suit :

  1. astimezone() : Cette méthode tente de convertir un objet datetime naïf de fuseau horaire en un Objet datetime prenant en compte le fuseau horaire. Cependant, elle ne peut pas être appliquée aux objets datetime naïfs, comme le montre l'extrait de code fourni.
  2. replace() : La méthode replace prend des arguments pour remplacer les valeurs dans un objet datetime, y compris le champ tzinfo. En utilisant cette méthode, on peut définir le champ tzinfo sur le fuseau horaire souhaité. Cependant, comme indiqué dans le bloc de code, le remplacement ne rend pas automatiquement l'objet datetime sensible au fuseau horaire.

Pour convertir correctement un objet datetime naïf en un objet prenant en compte le fuseau horaire, utilisez localize () méthode :

import datetime
import pytz

unaware = datetime.datetime(2011, 8, 15, 8, 15, 12, 0)
aware = pytz.utc.localize(unaware)

La méthode localize prend un objet datetime naïf et un fuseau horaire spécifique comme arguments. Il renvoie un nouvel objet datetime qui prend en compte le fuseau horaire, préservant les valeurs datetime d'origine.

Pour les fuseaux horaires spécifiques qui n'impliquent pas de calculs d'heure d'été, tels que UTC, l'approche suivante peut également être utilisée :

import datetime
import pytz

unaware = datetime.datetime(2011, 8, 15, 8, 15, 12, 0)
aware = unaware.replace(tzinfo=pytz.UTC)

Dans ce cas, replace définit directement le champ tzinfo sur le fuseau horaire spécifié, ce qui donne lieu à un objet datetime prenant en compte le fuseau horaire.

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