Cela dépend
Votre objet datetime est-il conscient du fuseau horaire ou naïf ?
Conscient du fuseau horaire
Si c'est conscient, c'est simple (et recommandé)
from datetime import datetime, timezone
aware_date = datetime.now(tz=timezone.utc)
posix_timestamp = aware_date.timestamp()
comme date.timestamp() vous donne un "timestamp POSIX"
_NOTE : plus précis de l'appeler un timestamp de l'époque/unix car il peut ne pas être conforme à POSIX_
Naïf au fuseau horaire
Si ce n'est pas conscient du fuseau horaire (naïf), alors vous devez savoir dans quel fuseau horaire il était à l'origine afin que nous puissions utiliser replace() pour le convertir en un objet de date conscient du fuseau horaire. Supposons que vous l'ayez stocké/récupéré comme étant Naïf UTC. Voici un exemple :
from datetime import datetime, timezone
naive_date = datetime.utcnow() # cette date est naïve, mais est basée sur UTC
aware_date = naive_date.replace(tzinfo=timezone.utc) # cette date n'est plus naïve
# maintenant nous faisons comme avec la dernière
posix_timestamp = aware_date.timestamp()
Il est toujours préférable d'obtenir une date consciente du fuseau horaire dès que possible pour éviter les problèmes qui peuvent survenir avec les dates naïves (car Python suppose souvent qu'elles sont des heures locales et peut vous désorienter)
NOTE : soyez également prudent dans votre compréhension de l'époque car elle dépend de la plateforme
3 votes
Les réponses à cette question ne sont plus à jour. Vous devriez utiliser la méthode
.timestamp()
des objetsdatetime.datetime
comme indiqué ci-dessous. Veuillez marquer cela comme la réponse correcte.0 votes
Assurez-vous également que lorsque vous appelez
.timestamp()
, vous utilisez un objet de date conscient du fuseau horaire, car les fuseaux horaires naïfs "sont supposés représenter l'heure locale".