Maison >développement back-end >Tutoriel Python >Comment puis-je convertir avec précision des objets datetime Python en heure d'époque ?

Comment puis-je convertir avec précision des objets datetime Python en heure d'époque ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-20 12:49:14986parcourir

How Can I Accurately Convert Python Datetime Objects to Epoch Time?

Conversion de Python Datetime en Epoch avec strftime : dévoilement des écarts de fuseau horaire

Pour obtenir le nombre de secondes depuis l'époque à partir d'une datetime UTC, les développeurs s'appuient souvent sur la fonction strftime. Cependant, comme démontré dans cette question, l'utilisation de strftime('%s') pour convertir une date/heure en époque peut donner des résultats inexacts en raison d'ajustements de fuseau horaire.

Pourquoi cet écart ?

Par défaut, strftime intègre le fuseau horaire du système dans ses calculs. En conséquence, il applique un décalage de fuseau horaire implicite, entraînant une conversion d'époque incorrecte pour les dates et heures dans certains fuseaux horaires.

Solutions pour une conversion précise

Pour éviter les inexactitudes induites par le fuseau horaire , envisagez ces approches alternatives :

  • Python 3.3 et Ci-dessus : Utilisez la méthode timestamp(), qui renvoie un horodatage précis en secondes à virgule flottante depuis l'époque, sans ajustement de fuseau horaire.
datetime.datetime(2012, 4, 1, 0, 0).timestamp()
  • Python 3.2 et plus tôt : Calculez explicitement le nombre total de secondes depuis le époque.
(datetime.datetime(2012, 4, 1, 0, 0) - datetime.datetime(1970, 1, 1)).total_seconds()

Attention contre l'utilisation de strftime('%s')

Il est crucial de noter que l'utilisation de strftime('%s' ) est déconseillé pour la conversion d'époque. En effet, strftime ne prend pas explicitement en charge « %s » comme argument de formatage. Sa compatibilité provient de l'implémentation strftime du système sous-jacent, qui introduit un comportement spécifique au fuseau horaire. Cette incohérence peut conduire à des résultats incorrects, ce qui en fait une méthode peu fiable pour la conversion d'époque portable.

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