J'ai un décalage horaire
time1 = datetime.datetime.fromtimestamp(time.mktime(time.gmtime()))
...
time2 = datetime.datetime.fromtimestamp(time.mktime(time.gmtime()))
diff = time2 - time1
Maintenant, comment puis-je trouver le nombre total de secondes écoulées? diff.seconds
ne compte pas les jours. Je pourrais faire:
diff.seconds + diff.days * 24 * 3600
Existe-t-il une méthode intégrée pour cela?
time1
etdiff
dans votre code. Pour obtenir l'heure utc actuelle sous la forme d'un objet datetime naïf, utilisez à ladatetime.utcnow()
place. Pour comprendre pourquoi vous devriez utiliser UTC au lieu de l'heure locale pour trouver la différence, voir Rechercher si 24 heures se sont écoulées entre les datetimes - Python .time.monotonic()
pourrait être préférable de trouver le temps écoulé entre les événements (au lieu detime.time()
oudatetime.utcnow()
).Réponses:
Utilisez
timedelta.total_seconds()
.la source
Vous avez un problème d'une manière ou d'une autre avec votre
datetime.datetime.fromtimestamp(time.mktime(time.gmtime()))
expression.(1) Si tout ce dont vous avez besoin est la différence entre deux instants en quelques secondes, le très simple
time.time()
fait le travail.(2) Si vous utilisez ces horodatages à d'autres fins, vous devez considérer ce que vous faites, car le résultat a une grande odeur partout:
gmtime()
renvoie un tuple d'heure en UTC maismktime()
attend un tuple d'heure en heure locale.Je suis à Melbourne, en Australie, où la TZ standard est UTC + 10, mais l'heure d'été est toujours en vigueur jusqu'à demain matin, donc c'est UTC + 11. Lorsque j'ai exécuté ce qui suit, il était le 2011-04-02T20: 31 heure locale ici ... UTC était le 2011-04-02T09: 31
Vous remarquerez que t3, le résultat de votre expression est UTC + 1, qui semble être UTC + (ma différence DST locale) ... pas très significatif. Vous devriez envisager d'utiliser
datetime.datetime.utcnow()
ce qui ne sautera pas d'une heure lorsque l'heure d'été est activée / désactivée et peut vous donner plus de précision quetime.time()
la source
Vous pouvez utiliser le module mx.DateTime
la source