日期处理: 获取上一月1号和下一月1号

 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)

 

posted @ 2021-01-06 18:05  士为知己  阅读(369)  评论(0)    收藏  举报