Maison >développement back-end >Tutoriel Python >Comment convertir avec précision un objet datetime Python en heure d'époque sans utiliser strftime(\'%s\') ?

Comment convertir avec précision un objet datetime Python en heure d'époque sans utiliser strftime(\'%s\') ?

DDD
DDDoriginal
2024-11-20 04:53:01351parcourir

How to Accurately Convert a Python datetime Object to Epoch Time Without Using strftime('%s')?

Conversion de datetime Python en Epoch à l'aide de strftime

À l'origine, l'objectif était de convertir une heure UTC en nombre de secondes depuis l'époque en utilisant temps fort. Cependant, lors de l'utilisation de strftime avec le format '%s', la valeur résultante différait d'une heure du nombre d'époques attendu. L'enquête sur cet écart a révélé que strftime intègre l'heure du système et s'ajuste aux différences de fuseau horaire, bien que datetime soit considéré comme naïf.

Solution

Pour surmonter ce problème, envisagez les alternatives suivantes :

Python 3.3 et versions ultérieures

  • Utiliser la méthode timestamp() de datetime :

    >>> datetime.datetime(2012, 4, 1, 0, 0).timestamp()
    1333234800.0

Python 3.2 et versions antérieures

  • Calculer explicitement la différence entre la date/heure donnée et la date/heure de l'époque :

    >>> (datetime.datetime(2012, 4, 1, 0, 0) - datetime.datetime(1970, 1, 1)).total_seconds()
    1333238400.0

Attention : éviter strftime('%s')

Il est crucial de noter que datetime ne prend pas officiellement en charge le spécificateur de format '%s' pour strftime. Sa fonctionnalité actuelle est due à l'interaction avec l'implémentation strftime du système, qui s'adapte aux différences de fuseau horaire. L'utilisation de strftime('%s') peut conduire à des résultats incohérents en raison de variations potentielles de 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