python中获取某个月有多少天的方法

先说结论:

  • python3.7以上,calendar中有monthlen这个方法,用起来更方便。
  • python3.6没有这个方法,使用calendar.monthrange这个方法吧。

用法说明

>>> import calendar
>>> calendar.monthrange(2010,10)[1]
31
>>> calendar.monthrange(2020,3)
(6, 31)

其实这种方法随便一搜一大把,我看到的全都是使用calendar.monthrange这个方法,返回一个元祖,第一个值代表该月第一天是周几,第二个参数代表该月有多少天。

>>> import calendar,datetime
>>> calendar.monthlen(2020,2)
29
>>> calendar.monthlen(2020,3)
31
>>> today = datetime.date.today()
>>> calendar.monthlen(today.year,today.month)
31

打开calendar.py源码,发现其中还有monthlen这个方法更适用一些,效果如上。

calendar.py中的源码

def monthrange(year, month):"""Return weekday (0-6 ~ Mon-Sun) and number of days (28-31) foryear, month."""if not 1 <= month <= 12:raise IllegalMonthError(month)day1 = weekday(year, month, 1)ndays = mdays[month] + (month == February and isleap(year))return day1, ndaysdef monthlen(year, month):return mdays[month] + (month == February and isleap(year))

另外只使用datetime模块的方法:

>>> import datetime
>>> (datetime.date(2020,3,1) - datetime.date(2020,2,1)).days
29
>>> today = datetime.date.today()
>>> ((today.replace(day=28) + datetime.timedelta(days=4)).replace(day=1)-datetime.timedelta(days=1)).day
31
# 先计算出下个月的第一天,再减一天,取得该月的最后一天,最后取出day

python版本问题

python3.6中的效果,没有monthlen方法

zang@zang-PC:~$ python3.6
>>> import calendar
>>> calendar.monthlen(2020,3)
Traceback (most recent call last):File "<stdin>", line 1, in <module>

python3.7中的效果

zang@zang-PC:~$ python3.7
>>> import calendar
>>> calendar.monthlen(2020,3)
31

本文链接:https://my.lmcjl.com/post/1182.html

展开阅读全文

4 评论

留下您的评论.