289 votes

Comment vérifier la différence, en secondes, entre deux dates?

Il doit y avoir un moyen plus facile de faire cela. J'ai des objets qui veulent être actualisés de temps en temps, donc je veux enregistrer quand ils ont été créés, vérifier par rapport à l'horodatage actuel et actualiser si nécessaire.

datetime.datetime s'est avéré difficile et je ne veux pas plonger dans la bibliothèque ctime. Y a-t-il quelque chose de plus facile pour ce genre de chose?

746voto

Rich Signell Points 1751

si vous voulez calculer les différences entre deux dates connues, utilisez total_seconds comme ceci:

 import datetime as dt

a = dt.datetime(2013,12,30,23,59,59)
b = dt.datetime(2013,12,31,23,59,59)

(b-a).total_seconds()
 

86400.0

 #note that seconds doesn't give you what you want:
(b-a).seconds
 

0

48voto

matcheek Points 1669
 import time  
current = time.time()

...job...
end = time.time()
diff = end - current
 

Cela marcherait-il pour toi?

20voto

Jarret Hardie Points 36266
>>> from datetime import datetime

>>>  a = datetime.now()

# wait a bit 
>>> b = datetime.now()

>>> d = b - a # yields a timedelta object
>>> d.seconds
7

(7 sera quelle que soit la quantité de temps vous avez attendu un peu au-dessus)

Je trouve datetime.datetime être assez utile, donc si il y a un compliquées ou difficiles d'accès scénario que vous avez rencontré, s'il vous plaît laissez-nous savoir.

EDIT: Merci à @WoLpH pour souligner que l'on n'est pas toujours nécessairement à la recherche d'actualiser fréquemment que les datetimes seront rapprochées. Par la comptabilité pour les jours dans le delta, vous pouvez gérer plus d'horodatage des écarts:

>>> a = datetime(2010, 12, 5)
>>> b = datetime(2010, 12, 7)
>>> d = b - a
>>> d.seconds
0
>>> d.days
2
>>> d.seconds + d.days * 86400
172800

12voto

Prashant Gaur Points 1531

Nous avons la fonction total_seconds () avec Python 2.7. Voir ci-dessous le code pour Python 2.6.

 def diffdates(d1, d2):
    #Date format: %Y-%m-%d %H:%M:%S
    return (time.mktime(time.strptime(d2,"%Y-%m-%d %H:%M:%S")) -
               time.mktime(time.strptime(d1, "%Y-%m-%d %H:%M:%S")))

d1 = datetime.now()
d2 = datetime.now() + timedelta(days=1)
diff = diffdates(d1, d2)
 

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