Calculer la différence de temps à l'aide de python
Je me demande si il y a une façon ou d'builtin disponibles de la bibliothèque pour trouver la différence dans le temps de deux chaînes de caractères d'entrée.
Ce que je veux dire c'est, si j'ai 2 chaînes en entrée:
- '2013-10-05T01:21:07Z'
- '2013-10-05T01:21:16Z'
comment je peux calculer la différence dans le temps et l'imprimer en sortie.
Je sais que ça paraît un peu idiot, mais toute aide est appréciée.
dateutil. Avez-vous essayé de googler?
La première chose que j'ai fait! Je suis passé par le module datetime et l'heure de module, mais ne pouvait pas trouver quelque chose d'utile. Je suis relativement nouveau pour python.
connexes: Comment analyser les ISO au format date en python?
La première chose que j'ai fait! Je suis passé par le module datetime et l'heure de module, mais ne pouvait pas trouver quelque chose d'utile. Je suis relativement nouveau pour python.
connexes: Comment analyser les ISO au format date en python?
OriginalL'auteur Prince Sharma | 2014-05-27
Vous devez vous connecter pour publier un commentaire.
L'analyse de vos chaînes à l'aide de
strptime()
:Cela permettra d'analyser le temps de chaînes que l'heure locale (réglage de l'heure d'été (DST) pour automatique), et les résultats sont à la fois des structures. Ces toujours tenir compte du fait que l'heure d'été a été explicitement off (0), (1), ou implicitement automatique (-1). Convertir un float (nombre de secondes depuis 1970-01-01):
Ensuite, on calcule la différence (en secondes):
Et de les convertir en jours/heures/minutes/secondes:
Le dernier bloc ne fonctionne correctement que pour des différences positives, alors attention à ne pas intervertir les
a
etb
😉Mais @J. F. Sebastian correctement souligné que cela pourrait ne pas être ce que vous souhaitiez. Il semble d'après la notation de vos chaînes de décrire une heure UTC, pas une heure locale. Pour de simples différences de temps ce qui est pertinent dans le cas où votre intervalles de temps de plus d'une heure d'été de l'interrupteur. Dans ce cas, il serait évidemment entraîner une différence de temps d'une heure une trop grande ou une heure trop petite (parce que l'UTC est toujours sans heure d'été).
Pour éviter cela, vous pouvez définir l'heure d'été, le drapeau automatique (-1) à une valeur fixe (e. g. 0 pour désactiver) et l'utilisation de ces valeurs:
Ou, aussi comme @J. F. Sebastian l'a souligné, vous pouvez oublier le
time
module et au lieu d'utiliserdatetime.datetime
qui est pas au courant de l'heure d'été, aspect:Les résultats sont
datetime
les objets qui peuvent être déduites directement pour obtenir unetimedelta
objet qui représente une telle différence de temps que vous le souhaitez. L'impression qu'il va entraîner qqch comme0:00:05
qui pourrait bien être exactement ce que vous cherchez.l'entrée est l'heure UTC. Utilisation
calendar.timegm()
au lieu detime.mktime()
(sinon, il y a 50% de chance d'une erreur au cours de l'heure d'été transitions). Ou mieux utiliserdatetime.strptime()
au lieu detime.strptime()
.le point est: votre réponse peut retourner un mal résultat pour une entrée en raison de la
time.mktime()
d'utilisation et vous pouvez l'éviter complètement à l'aide decalendar.timegm()
.prendre deux points dans le temps que s'il est interprété comme heure locale ont décalages horaires par exemple,
time.mktime()
code renvoie des résultats incorrects si votre fuseau horaire local est America/New_York pour2015-11-01T00:00:00Z
et2015-11-01T06:00:00Z
d'entrée.Je vous remercie pour cette. J'ai réécrit les pièces de ma réponse.
OriginalL'auteur Alfe
Vous semblez être l'aide d'un ISO 8601 formaté dateTime. Ce format est utilisé dans de nombreux endroits, y compris le GPS eXchange Format.
À l'aide de datetime:
Avantages:
Inconvénients:
À l'aide de python-dateutil:
Avantages:
Inconvénients:
En utilisant le temps.strptime et le temps.mktime comme suggéré par Alfe
Avantages:
Inconvénients:
datetime
(pour faire la différence) +time.strptime
(pour poignée de secondes intercalaires)OriginalL'auteur anjsimmo
Réponse Originale À Cette Question ici
Ce n'est pas ce que l'OP a demandé!
cochez cette stackoverflow.com/questions/9504356/...
En fait j'ai 2 gps des points de suivi dans un format séparé par des virgules de l'Élévation en mètres, de la Date et de l'Heure, TrackPointId, la Latitude en degrés, la Longitude en degrés. 1) 861.1,2013-10-05T01:21:28Z,3,13.348647,77.686088 2) 867,2013-10-05T01:29:03Z,4,13.34732,77.682364 je veux calculer la différence de temps dans ces deux points de suivi
ensuite, vous avez à utiliser par rapport timedelta qui sera plus facile pour trouver datetime différence
OriginalL'auteur Senthilnathan