2017-06-15 4 views
1

Ich möchte eine Start- und Endzeit eingeben: Datum & Zeit Ich möchte Berechnungen für die verstrichene Zeit zwischen den beiden Daten ausführen.Python3 Rechenzeit mit Datetime?

versuchen, datetime, date, time, timedelta zu verstehen. strptime/strftime

Wenn Benutzer eingibt; START_TIME: 2017,7,15 10.45 end_time: 2017,7,16 01.30

ber die Stunden/Minuten mit diff Gewichte: 10.45 -> 21.00 = 10.15 * 2 21.00 Uhr -> 01.30 = 4: 30 * 2,5

versucht, etwas wie folgt aus:

st_date = date(2017, 6, 15) 
st_time = time(10, 45) 
start = datetime.combine(st_date, st_time) 

end_date = date(2017, 6, 15) 
end_time = time(22, 30) 
end = datetime.combine(end_date, end_time) 

st = datetime.strftime(end, '%Y %B %d %I:%M %p') 
et = datetime.strftime(start, '%Y %B %d %I:%M %p') 

Aber es ist völlig falsch. Ich kann keine Operation auf dem strftime-Objekt ausführen. Können Sie mir bitte in die richtige Richtung zeigen, wie es weitergeht?

Antwort

1

Ich kann nicht eine Operation auf dem Strftime Objekt durchführen.

Die strftime-Funktion gibt eine formatierte Zeichenfolge zurück, kein Datetime-Objekt. Wenn Sie zu print(st) wären, würden Sie 2017 June 15 10:45 AM erhalten.

Wenn Sie die Zeit, um verstrichene zwischen zwei Datetime-Objekten, so dass sie nur subtrahieren, etwa so:

from datetime import date 
from datetime import time 
from datetime import datetime 

st_date = date(2017, 6, 15) 
st_time = time(10, 45) 
start = datetime.combine(st_date, st_time) 

end_date = date(2017, 6, 15) 
end_time = time(22, 30) 
end = datetime.combine(end_date, end_time) 

diff = end - start 

Dies erzeugt ein timedelta Objekt. Jetzt, wenn Sie die verstrichene Zeit in Sekunden möchten, können Sie dies tun:

elapsed_time = diff.total_seconds() 
+0

Vielen Dank. Datum (int (Eingabe())) – scopa