2024-04-20 00:06:10 发布
网友
编辑:请看@Blair Conrad的答案
>>> import datetime >>> datetime.date(2000, 2, 1) - datetime.timedelta(days=1) datetime.date(2000, 1, 31)
我之前在查看documentation for the calendar module时没有注意到这一点,但是名为monthrange的方法提供了以下信息:
monthrange(year, month) Returns weekday of first day of the month and number of days in month, for the specified year and month.
>>> import calendar >>> calendar.monthrange(2002,1) (1, 31) >>> calendar.monthrange(2008,2) (4, 29) >>> calendar.monthrange(2100,2) (0, 28)
所以:
calendar.monthrange(year, month)[1]
似乎是最简单的方法。
为了清楚起见,monthrange也支持闰年:
monthrange
>>> from calendar import monthrange >>> monthrange(2012, 2) (2, 29)
My previous answer仍然有效,但显然是次优的。
如果不想导入calendar模块,一个简单的两步函数也可以是:
calendar
import datetime def last_day_of_month(any_day): next_month = any_day.replace(day=28) + datetime.timedelta(days=4) # this will never fail return next_month - datetime.timedelta(days=next_month.day)
输出:
>>> for month in range(1, 13): ... print last_day_of_month(datetime.date(2012, month, 1)) ... 2012-01-31 2012-02-29 2012-03-31 2012-04-30 2012-05-31 2012-06-30 2012-07-31 2012-08-31 2012-09-30 2012-10-31 2012-11-30 2012-12-31
编辑:请看@Blair Conrad的答案
我之前在查看documentation for the calendar module时没有注意到这一点,但是名为monthrange的方法提供了以下信息:
所以:
似乎是最简单的方法。
为了清楚起见,
monthrange
也支持闰年:My previous answer仍然有效,但显然是次优的。
如果不想导入
calendar
模块,一个简单的两步函数也可以是:输出:
相关问题 更多 >
编程相关推荐