如何获得该月的最后一天?
有没有办法使用Python的标准库来轻松确定(即一个函数调用)给定月份的最后一天?
如果标准库不支持此功能,则 dateutil 包是否支持此功能?
有没有办法使用Python的标准库来轻松确定(即一个函数调用)给定月份的最后一天?
如果标准库不支持此功能,则 dateutil 包是否支持此功能?
calendar.monthrange
提供以下信息:
日历。monthrange(年,月)
返回指定年份和月份月份月份的第一天的工作日和月份中的天数。
>>> import calendar
>>> calendar.monthrange(2002, 1)
(1, 31)
>>> calendar.monthrange(2008, 2) # leap years are handled correctly
(4, 29)
>>> calendar.monthrange(2100, 2) # years divisible by 100 but not 400 aren't leap years
(0, 28)
到]
calendar.monthrange(year, month)[1]
似乎是最简单的方法。
如果您不想导入模块,也可以是简单的两步函数:calendar
import datetime
def last_day_of_month(any_day):
# The day 28 exists in every month. 4 days later, it's always next month
next_month = any_day.replace(day=28) + datetime.timedelta(days=4)
# subtracting the number of the current day brings us back one month
return next_month - datetime.timedelta(days=next_month.day)
输出:
>>> for month in range(1, 13):
... print(last_day_of_month(datetime.date(2022, month, 1)))
...
2022-01-31
2022-02-28
2022-03-31
2022-04-30
2022-05-31
2022-06-30
2022-07-31
2022-08-31
2022-09-30
2022-10-31
2022-11-30
2022-12-31