58 lines
1.5 KiB
Python
58 lines
1.5 KiB
Python
# -*- coding: ansi -*-
|
|
|
|
def timetosec(time_str):
|
|
parts = time_str.split(':')
|
|
parts = [int(p) for p in parts]
|
|
|
|
if len(parts) == 3: # HH:MM:SS
|
|
hours, minutes, seconds = parts
|
|
elif len(parts) == 2: # MM:SS
|
|
hours = 0
|
|
minutes, seconds = parts
|
|
elif len(parts) == 1: # SS
|
|
hours = 0
|
|
minutes = 0
|
|
seconds = parts[0]
|
|
else:
|
|
raise ValueError("Zeitformat")
|
|
|
|
total_seconds = hours * 3600 + minutes * 60 + seconds
|
|
return total_seconds
|
|
|
|
print(timetosec("02:15:30")) # 8130
|
|
print(timetosec("15:30")) # 930
|
|
print(timetosec("45")) # 45
|
|
|
|
|
|
def format_seconds(seconds: int) -> str:
|
|
"""
|
|
Meine Interpretation von dem Moodle eintrag. Der leer ist.
|
|
Wandelt Sekunden in das nächst beste Format um
|
|
:param seconds -> int
|
|
:returns str
|
|
"""
|
|
if seconds < 0:
|
|
return "falsche eingable"
|
|
|
|
intervals = (
|
|
('Tag', 86400), # 60*60*24
|
|
('Stunde', 3600), # 60*60
|
|
('Minute', 60),
|
|
('Sekunde', 1),
|
|
)
|
|
|
|
result = []
|
|
for name, count in intervals:
|
|
value = seconds // count
|
|
if value:
|
|
seconds -= value * count
|
|
if value == 1:
|
|
result.append(f"{value} {name}")
|
|
else:
|
|
result.append(f"{value} {name}en")
|
|
return ', '.join(result) if result else "0 Sekunden"
|
|
|
|
print(format_seconds(3661)) # 1std 1m 1s
|
|
print(format_seconds(86465)) # 1t 1m 5s
|
|
print(format_seconds(59)) # 59s
|