257 votes

En Python, comment convertir un objet `datetime` en secondes ?

Excusez cette question simple... Je suis nouveau en Python... J'ai cherché un peu partout et rien ne semble fonctionner.

J'ai un groupe d'objets datetime et je veux calculer le nombre de secondes depuis un moment fixe dans le passé pour chacun d'eux (par exemple depuis le 1er janvier 1970).

import datetime
t = datetime.datetime(2009, 10, 21, 0, 0)

Il semble que cela ne différencie que les dates qui ont des jours différents :

t.toordinal()

Toute aide est la bienvenue.

0 votes

2 votes

Je convertirais probablement les deux en S depuis l'époque et je partirais de là : int(t.timestamp())

0 votes

0voto

questionto42 Points 1372

Je ne vois pas cela dans toutes les réponses, même si je suppose que c'est le besoin par défaut :

t_start = datetime.now()
sleep(2)
t_end = datetime.now()
duration = t_end - t_start
print(round(duration.total_seconds()))

Si vous n'utilisez pas .total_seconds() il jette : TypeError: type datetime.timedelta doesn't define __round__ method .

Exemple :

>>> duration
datetime.timedelta(seconds=53, microseconds=621861)
>>> round(duration.total_seconds())
54
>>> duration.seconds
53

En prenant duration.seconds ne prend que les secondes, en laissant de côté les microsecondes, comme si vous aviez exécuté math.floor(duration.total_seconds()) .

-2voto

Samay Pashine Points 1

La méthode standard pour trouver le temps de traitement en ms d'un bloc de code dans python 3.x est la suivante :

import datetime

t_start = datetime.datetime.now()

# Here is the python3 code, you want 
# to check the processing time of

t_end = datetime.datetime.now()
print("Time taken : ", (t_end - t_start).total_seconds()*1000, " ms")

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X