日期处理: 获取上一月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)