Python différences de temps
J'ai deux fois des objets.
Exemple
time.struct_time(tm_year=2010, tm_mon=9, tm_mday=24, tm_hour=19, tm_min=13, tm_sec=37, tm_wday=4, tm_yday=267, tm_isdst=-1)
time.struct_time(tm_year=2010, tm_mon=9, tm_mday=25, tm_hour=13, tm_min=7, tm_sec=25, tm_wday=5, tm_yday=268, tm_isdst=-1)
Je veux avoir la différence de ces deux. Comment pourrais-je le faire?
J'ai besoin de quelques minutes et secondes, ainsi que la durée de ces deux.
Regardez: stackoverflow.com/questions/1697815/...
timezone-connaissance de la réponse: Rechercher si les 24 heures ont passé entre datetimes - Python
timezone-connaissance de la réponse: Rechercher si les 24 heures ont passé entre datetimes - Python
OriginalL'auteur user469652 | 2010-10-13
Vous devez vous connecter pour publier un commentaire.
Time
instances ne prennent pas en charge l'opération de soustraction. Étant donné qu'une façon de résoudre ce problème serait de convertir le temps en secondes depuis epoch et ensuite trouver la différence, utilisation:heure locale peut être ambiguë donc
mktime()
peut retourner un résultat erroné (50% de chance au cours de la fin de l'heure d'été transitions, ou tout simplement mauvais pour les dates antérieures si historique tz base de données n'est pas utilisé). Il est incorrect de passer de l'heure UTC (le résultat degmtime()
), sauf si le fuseau horaire est UTC.renvoie "secondes comme à l'époque".
/60
retourne le nombre de minutes que l'OP demande. Je voudrais utiliserminutes, seconds = divmod(seconds, 60)
pour obtenir des minutes, des secondes séparément ou à utilisertimedelta
que @jweyrich suggéré.OriginalL'auteur Manoj Govindan
mktime()
peut retourner un résultat fauxNe fonctionne pas pour Python 3.6:
errorMessage: "unsupported operand type(s) for -: 'time.struct_time' and 'time.struct_time
hein? Il fonctionne très bien avec python3 - voir imgur.com/a/3rbhW
Oui, mea culpa. J'ai passé le mauvais arguments. BTW, est-il plus simple directement avec
time.struct_time
type? Sans avoir à les convertir àmktime
de votre point de l'être qu'il va revenir un mauvais résultat lorsque vous fournissez des 2 horodatages comprendre une transition à partir de l'heure d'été non l'heure d'été ou vice-versa. D'accord.
OriginalL'auteur jweyrich
Vous pouvez utiliser
time.mktime(t)
avec le struct_time objet (passé en "t") pour la convertir en "secondes depuis epoch" valeur à virgule flottante. Ensuite, vous pouvez soustraire à faire la différence en quelques secondes, et de diviser par 60 pour obtenir la différence en quelques minutes.OriginalL'auteur DerfK
Il y a une autre façon de trouver le temps de la différence entre deux dates (pas mieux que la solution précédente, je suppose):
Il donnera la différence en jours, voire en quelques secondes ou une combinaison de tout cela. Le type (dt2 - dt1) est de type datetime.timedelta. Regardez dans le bibliothèque pour plus de détails.
OriginalL'auteur Somum