用Python获取本月的最后一天
有没有使用Python的标准库来轻松确定(即一个函数调用)给定月份的最后一天的方法?
如果标准库不支持,dateutil包是否支持这个?
之前我在查看日历模块的文档时没有注意到这一点,但名为monthrange的方法提供了以下信息:
月份(年份,月份)
返回指定年份和月份的月份第一天的工作日和月份中的天数。
>>> 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)
我以前的答案仍然有效,但显然不是最理想的。
如果你不想导入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康拉德的答案为更清洁的解决方案
>>> import datetime
>>> datetime.date (2000, 2, 1) - datetime.timedelta (days = 1)
datetime.date(2000, 1, 31)
>>>
链接地址: http://www.djcxy.com/p/18477.html