-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathhours.py
48 lines (37 loc) · 1.15 KB
/
hours.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import sys
from datetime import datetime, date, time, timedelta
current_date = date.today()
def parse_hh_mm(item: str) -> datetime:
hh, mm = item.split(':')
tm = time(int(hh), int(mm), 0)
dt = datetime.combine(current_date, tm)
return dt
def parse_time_range(rng: str) -> (datetime, datetime):
left, right = rng.split("-")
left = parse_hh_mm(left)
if right.strip() == "":
right = datetime.now()
else:
right = parse_hh_mm(right)
return (
left,
right
)
def get_entered_time_ranges():
for line in sys.stdin:
items = line.split(" ")
for item in items:
if item != "":
yield item
def td_to_string(td: timedelta) -> str:
seconds = td.seconds % 60
minutes = int(td.seconds / 60) % 60
hours = int(td.seconds / 3600) % 60
days = td.days
return f"{days}d{hours}h{minutes}min{seconds}s"
def sum_time(ranges):
return sum(((right - left) for (left, right) in ranges), timedelta())
time_ranges = [parse_time_range(rng) for rng in get_entered_time_ranges()]
print(sum_time(time_ranges))