Comment savoir la différence de temps en minutes entre deux datetime
objets?
python
datetime
date-arithmetic
Hobhouse
la source
la source
delorean
dénaturationdatetime
,pytz
approche par exemple, l'exemple de code de démarrage pourrait être écrit commed = datetime.now(timezone(EST))
(une ligne lisible au lieu de cinq).Nouveau dans Python 2.7 est la
timedelta
méthode d'instance.total_seconds()
. D'après les documents Python, cela équivaut à(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
la source
elapsedTime / timedelta(minutes=1)
pour obtenir la différence en minutes en Python 3Utilisation de l'exemple datetime
Durée en années
Durée en jours
Durée en heures
Durée en minutes
Durée en secondes
Durée en microsecondes
Durée totale entre les deux dates
ou simplement:
Edit 2019 Puisque cette réponse a gagné du terrain, je vais ajouter une fonction, ce qui pourrait simplifier l'utilisation pour certains
la source
TypeError: 'float' object is not subscriptable
lors de l'utilisation pour:then = datetime(2017, 8, 11, 15, 58, tzinfo=pytz.UTC)
now = datetime(2018, 8, 11, 15, 58, tzinfo=pytz.UTC)
getDuration(then, now, 'years')
Il suffit de soustraire l'un de l'autre. Vous obtenez un
timedelta
objet avec la différence.Vous pouvez convertir
dd.days
,dd.seconds
etdd.microseconds
en minutes.la source
Si
a
,b
sont des objets datetime alors pour trouver la différence de temps entre eux en Python 3:Sur les versions antérieures de Python:
Si
a
,b
sont des objets datetime naïfs tels que retournés pardatetime.now()
alors le résultat peut être faux si les objets représentent l'heure locale avec différents décalages UTC, par exemple, autour des transitions DST ou pour des dates passées / futures. Plus de détails: recherchez si 24 heures se sont écoulées entre les heures - Python .Pour obtenir des résultats fiables, utilisez des objets temps UTC ou datetime sensibles au fuseau horaire.
la source
Utilisez divmod:
la source
Voici comment j'obtiens le nombre d'heures qui se sont écoulées entre deux objets datetime.datetime:
la source
timedelta.seconds
ne donne que le nombre de secondes stockées explicitement - ce que la documentation garantit totalisera moins d'une journée. Vous voulez(after - before).total_seconds()
, ce qui donne le nombre de secondes qui s'étendent sur tout le delta.(after - before).total_seconds() // 3600
(Python 2.7) ou(after - before) // timedelta(seconds=3600)
(Python 3)Pour trouver simplement le nombre de jours: timedelta a un attribut «jours». Vous pouvez simplement l'interroger.
la source
J'ai pensé qu'il pourrait être utile de mentionner également le formatage en ce qui concerne timedelta. strptime () analyse une chaîne représentant une heure selon un format.
Cela produira: 0: 05: 00.518000
la source
J'utilise quelque chose comme ça:
la source
return t1-t2
c'est pour trouver la différence entre l'heure actuelle et 9h30
la source
C'est mon approche en utilisant mktime .
la source
mktime()
attend l'heure locale comme entrée. L'heure locale peut être ambiguë etmktime()
peut renvoyer une mauvaise réponse dans ce cas. Utilisez à laa - b
place (a, b - objets datetime) .mktime()
est inutile et c'est parfois faux. Ne l'utilisez pas dans ce cas.De différentes manières pour obtenir la différence entre la date;
Obtenez donc la sortie en min.
Merci
la source
J'ai utilisé les différences de temps pour les tests d'intégration continue pour vérifier et améliorer mes fonctions. Voici un code simple si quelqu'un en a besoin
En utilisant:
et j'ai quelque chose comme ça dans la sortie du journal
la source
Sur la base d'une excellente réponse @Attaque , je propose une version simplifiée plus courte du calculateur de différence datetime:
Je l'ai changé pour éviter de déclarer des fonctions répétitives, supprimé le joli intervalle d'impression par défaut et ajouté la prise en charge des millisecondes, des semaines et des mois ISO (à l'esprit, les mois sont juste approximatifs, en supposant que chaque mois est égal à
365/12
).Ce qui produit:
la source