Wie kann ich den Zeitunterschied in Minuten zwischen zwei datetime
Objekte?
Antworten
Zu viele Anzeigen?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
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
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
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
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
- See previous answers
- Weitere Antworten anzeigen