1 import datetime
2
3
4 def get_next_month(date_t: datetime.date) -> datetime.date:
5 """
6 :param date_t: datetime.date or datetime.datetime -> 2020-04-12
7 :return: Class object for date_t(date_t.__class__), the first day of the month
8 Usage:
9 >>> next_month = get_next_month(datetime.date(2020, 4, 12))
10 datetime.date(2020, 5, 1)
11 >>> next_month = get_next_month(datetime.datetime(2020, 4, 12))
12 datetime.datetime(2020, 5, 1)
13 >>>
14 """
15 if not isinstance(date_t, (datetime.date, datetime.datetime)):
16 raise Exception('Input format error')
17
18 _month = date_t.month + 1
19 _year = date_t.year
20 if _month == 13:
21 _month = 1
22 _year += 1
23 return getattr(date_t, '__class__')(month=_month, year=_year, day=1)
24
25
26 def get_last_month(date_t: datetime.date) -> datetime.date:
27 """
28 :param date_t: datetime.date or datetime.datetime -> 2020-04-12
29 :return: Class object for date_t(date_t.__class__), the first day of the month
30 Usage:
31 >>> last_month = get_last_month(datetime.date(2020, 4, 12))
32 datetime.date(2020, 3, 1)
33 >>> last_month = get_last_month(datetime.datetime(2020, 4, 12))
34 datetime.datetime(2020, 3, 1)
35 >>>
36 """
37 if not isinstance(date_t, (datetime.date, datetime.datetime)):
38 raise Exception('Input format error')
39 _month = date_t.month - 1
40 _year = date_t.year
41 if _month == 0:
42 _month = 12
43 _year -= 1
44 return getattr(date_t, '__class__')(month=_month, year=_year, day=1)