Comment dire la différence de temps en minutes entre deux datetime
des objets ?
Référence : docs.python.org/library/datetime.html#datetime-objects . Lire "opérations soutenues".
Comment dire la différence de temps en minutes entre deux datetime
des objets ?
>>> import datetime
>>> first_time = datetime.datetime.now()
>>> later_time = datetime.datetime.now()
>>> difference = later_time - first_time
datetime.timedelta(0, 8, 562000)
>>> seconds_in_day = 24 * 60 * 60
>>> divmod(difference.days * seconds_in_day + difference.seconds, 60)
(0, 8) # 0 minutes, 8 seconds
Soustraire le temps ultérieur du premier temps. difference = later_time - first_time
crée un objet datetime qui ne contient que la différence. Dans l'exemple ci-dessus, la différence est de 0 minute, 8 secondes et 562000 microsecondes.
Référence : docs.python.org/library/datetime.html#datetime-objects . Lire "opérations soutenues".
@markcial : delorean
déforme le site datetime
, pytz
approche, par exemple, l'exemple de code de démarrage pourrait s'écrire comme suit d = datetime.now(timezone(EST))
(une ligne lisible au lieu de cinq).
La nouveauté de Python 2.7 est la fonction timedelta
méthode d'instance .total_seconds()
. D'après la documentation de Python, ceci est équivalent à (td.microseconds + (td.seconds + td.days * 24 * 3600) * 10**6) / 10**6
.
Référence : http://docs.python.org/2/library/datetime.html#datetime.timedelta.total_seconds
>>> import datetime
>>> time1 = datetime.datetime.now()
>>> time2 = datetime.datetime.now() # waited a few minutes before pressing enter
>>> elapsedTime = time2 - time1
>>> elapsedTime
datetime.timedelta(0, 125, 749430)
>>> divmod(elapsedTime.total_seconds(), 60)
(2.0, 5.749430000000004) # divmod returns quotient and remainder
# 2 minutes, 5.74943 seconds
Il suffit de soustraire l'un de l'autre. Vous obtenez un timedelta
objet avec la différence.
>>> import datetime
>>> d1 = datetime.datetime.now()
>>> d2 = datetime.datetime.now() # after a 5-second or so pause
>>> d2 - d1
datetime.timedelta(0, 5, 203000)
Vous pouvez convertir dd.days
, dd.seconds
et dd.microseconds
à des minutes.
Ça ne marchera pas tout à fait : timedelta.seconds
ne donne que le nombre de secondes explicitement stocké - dont la documentation garantit qu'elle sera inférieure à un jour. Vous voulez (after - before).total_seconds()
qui donne le nombre de secondes qui s'étendent sur le tout le site delta.
(after - before).total_seconds() // 3600
(Python 2.7) ou (after - before) // timedelta(seconds=3600)
(Python 3)
@lvc Mon ancien code était en fait écrit de cette façon, et je pensais être intelligent et le "réparer". Merci pour la correction.
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.
0 votes
Il existe de nombreuses significations des différences de date (temps réel, horloge murale, etc.). Votre question doit donc être plus détaillée.