[Python] Wie kann ich am besten die Stunden aus einer Zeitspanne entnehmen?
Mein Problem ist folgendes ich möchte aus einer Zeitspanne z.B 10:30-18:00Uhr, die Stunden entnehmen, bei ganzen Zahlen könnte ich es ja einfach subtrahieren, aber bei halben,viertel, ... Stunden macht mir das grade Probleme.
lst = ["10.00-18.00", "10.30-18.00"]
for i in lst:
splt = i.split("-")
hrs = float(splt[1])-float(splt[0])
print(hrs)
2 Antworten
Von gutefrage auf Grund seines Wissens auf einem Fachgebiet ausgezeichneter Nutzer
Programmiersprache, Programmieren & Softwareentwicklung
timeList = ["10.00-18.00", "10.30-18.00"]
def timeBetween(time): # Funktion zum Zeitspanne rechnen
time1 = time.split("-")[0].strip() # Zeiten bekommen und mögliche Leertaste entfernen
time2 = time.split("-")[1].strip()
hour1 = int(time1.split(".")[0]) # Stunde und Minute als Zahl erhalten
minute1 = int(time1.split(".")[1])
hour2 = int(time2.split(".")[0])
minute2 = int(time2.split(".")[1])
resultHour = hour2 - hour1 # Stunde berechnen
resultMinute = minute2 - minute1 # Minute berechnen
if resultMinute < 0: # Wenn resultMinute eine Minus Zahl, muss sie von 60 Subtrahiert werden, damit aus -20 eine 40 wird
resultMinute = 60 + resultMinute
resultHour -= 1 # Weil 0 unterschritten wurde, muss auch die Stunde -1 gerechnet werden
sResultHour = str(resultHour) # Zahl zu String
if resultHour < 10:
sResultHour = "0" + str(resultHour) # Bei Zahl unter 10, eine 0 davor, damit man 01 statt 1 hat
sResultMinute = str(resultMinute)
if resultMinute < 10:
sResultMinute = "0" + str(resultMinute)
resultTime = sResultHour + "." + sResultMinute # Ergebnis wieder zusammenbauen
return resultTime
for time in timeList:
print(timeBetween(time))
Probiere es mal damit 😉 Habe es mit deinen Werten getestet. Hat geklappt. Kannst es ja weiter testen und möglicherweise verbessern :)
Du kannst hier nicht Kommazahlen benutzen. Deshalb geht es nicht. Kommazahlen gehen bis zur nächsten 1, also 0,1 0,2 0,3 ... 0,8 0,9 1,0
Du musst es also etwas umbauen und einzeln rechnen. Dann wieder zusammenbauen. Um immer dran denken. Ist die Minute über die Grenze, muss die Stunde minus 1
Von gutefrage auf Grund seines Wissens auf einem Fachgebiet ausgezeichneter Nutzer
Programmiersprache, Python, Python 3
>>> import datetime as dt
>>> t2=dt.datetime.strptime('18:00','%H:%M')
>>> t1=dt.datetime.strptime('10:30','%H:%M')
>>> t2-t1
datetime.timedelta(seconds=27000)
>>> mins,secs=divmod((t2-t1).seconds,60)
>>> mins,secs
(450, 0)
>>> hrs,mins=divmod(mins,60)
>>> hrs
7
>>> mins
30
So könnte man das machen, Du müßtest natürlich "%H.%M" als Format-String nutzen.