Il doit y avoir un moyen plus facile de faire cela. J'ai des objets qui veulent être rafraîchis de temps en temps, alors 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?
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
import time
current = time.time()
...job...
end = time.time()
diff = end - current
cela marcherait-il pour toi?
>>> 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 le temps que vous avez attendu un peu plus haut)
Je trouve que datetime.datetime est assez utile. Par conséquent, si vous rencontrez un scénario compliqué ou inconfortable, veuillez nous en informer.
EDIT: Merci à @WoLpH d’avoir fait remarquer qu’on ne cherche pas toujours à actualiser si fréquemment que les dates/heures seront rapprochées. En comptabilisant les jours dans le delta, vous pouvez gérer les écarts plus longs d’horodatage:
>>> 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
Nous avons la fonction total_seconds () avec Python 2.7. Veuillez consulter le code ci-dessous pour python 2.6.
import datetime
import time
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)
Voici celui qui fonctionne pour moi.
from datetime import datetime
date_format = "%H:%M:%S"
# You could also pass datetime.time object in this part and convert it to string.
time_start = str('09:00:00')
time_end = str('18:00:00')
# Then get the difference here.
diff = datetime.strptime(time_end, date_format) - datetime.strptime(time_start, date_format)
# Get the time in hours i.e. 9.60, 8.5
result = diff.seconds / 3600;
J'espère que cela t'aides!