575 Stimmen

Wie finde ich die Zeitdifferenz zwischen zwei datetime-Objekten in Python?

Wie kann ich den Zeitunterschied in Minuten zwischen zwei datetime Objekte?

1voto

LordBlick Punkte 11

Vielleicht finden Sie dieses schnelle Snippet in nicht allzu großen Zeitabständen nützlich:

    from datetime import datetime as dttm
    time_ago = dttm(2017, 3, 1, 1, 1, 1, 1348)
    delta = dttm.now() - time_ago
    days = delta.days # can be converted into years which complicates a bit…
    hours, minutes, seconds = map(int, delta.__format__('').split('.')[0].split(' ')[-1].split(':'))

getestet mit Python v.3.8.6

1voto

Serg Smyk Punkte 513

Ich habe Zeitunterschiede für kontinuierliche Integrationstests genutzt, um meine Funktionen zu überprüfen und zu verbessern. Hier ist einfacher Code, falls jemand ihn braucht

from datetime import datetime

class TimeLogger:
    time_cursor = None

    def pin_time(self):
        global time_cursor
        time_cursor = datetime.now()

    def log(self, text=None) -> float:
        global time_cursor

        if not time_cursor:
            time_cursor = datetime.now()

        now = datetime.now()
        t_delta = now - time_cursor

        seconds = t_delta.total_seconds()

        result = str(now) + ' tl -----------> %.5f' % seconds
        if text:
            result += "   " + text
        print(result)

        self.pin_time()

        return seconds

time_logger = TimeLogger()

Verwenden:

from .tests_time_logger import time_logger
class Tests(TestCase):
    def test_workflow(self):
    time_logger.pin_time()

    ... my functions here ...

    time_logger.log()

    ... other function(s) ...

    time_logger.log(text='Tests finished')

und ich habe etwas wie das in der Log-Ausgabe

2019-12-20 17:19:23.635297 tl -----------> 0.00007
2019-12-20 17:19:28.147656 tl -----------> 4.51234   Tests finished

1voto

Anurag Pandey Punkte 724

In Andere Wege zu bekommen Unterschied zwischen Datum;

import dateutil.parser
import datetime
last_sent_date = "" # date string
timeDifference = current_date - dateutil.parser.parse(last_sent_date)
time_difference_in_minutes = (int(timeDifference.days) * 24 * 60) + int((timeDifference.seconds) / 60)

So erhalten Sie Output in Min.

Gracias

1voto

Eduardo Punkte 4152

Dies ist mein Ansatz mit mktime .

from datetime import datetime, timedelta
from time import mktime

yesterday = datetime.now() - timedelta(days=1)
today = datetime.now()

difference_in_seconds = abs(mktime(yesterday.timetuple()) - mktime(today.timetuple()))
difference_in_minutes = difference_in_seconds / 60

-1voto

code-freeze Punkte 395
import datetime
date = datetime.date(1, 1, 1)
#combine a dummy date to the time
datetime1 = datetime.datetime.combine(date, start_time)
datetime2 = datetime.datetime.combine(date, stop_time)  
#compute the difference
time_elapsed = datetime1 - datetime2

start_time --> Startzeit für datetime-Objekt
end_time--> Endzeit für datetime-Objekt

wir können die datetime.time-Objekte nicht direkt subtrahieren
daher müssen wir ein zufälliges Datum hinzufügen (wir verwenden combine)
oder Sie können anstelle von (1,1,1) das "Heute" verwenden

Ich hoffe, das hilft

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X