]> ToastFreeware Gitweb - philipp/winterrodeln/wrpylib.git/blob - wrpylib/lib_update_public_transport.py
898fc1e2441736388b890fc101588433c035b32f
[philipp/winterrodeln/wrpylib.git] / wrpylib / lib_update_public_transport.py
1 from datetime import date, timedelta
2
3
4 def day_of_time_table_change(year: int):
5     """The yearly public transport timetable change is taking effect beginning of the 2nd Sunday in December
6     according to https://mobilitaetsverbuende.atlassian.net/wiki/spaces/GEO/pages/181272612/Liniennetz.
7     This function returns the first date of the new timetable for a given 4 digit year."""
8     first_of_december = date(year, 12, 1)
9     weekday_of_first_december = first_of_december.weekday()  # Monday 0 ... Sunday 6
10     days_until_first_sunday_in_december = 6 - weekday_of_first_december
11     return date(year, 12, 1 + days_until_first_sunday_in_december + 7)
12
13
14 def default_query_date(today: date) -> date:
15     """Calculates a work_day after the date given, but before the schedule change on the second Sunday of December."""
16     change_date = day_of_time_table_change(today.year)
17     query_date = change_date - timedelta(days=2)
18     if query_date.day == 8:
19         query_date -= timedelta(days=1)
20     if query_date < today:
21         return default_query_date(today + timedelta(days=14))
22     return query_date