Python中的calendar模块提供了一组用于处理日期方面的函数和类。其中,monthrange()函数可以用于返回指定年份和月份的第一天是星期几以及该月的总天数。
一、获取某一月份的总天数
calendar.monthrange()函数返回一个元组,该元组的第二个元素即为指定月份的总天数。下面代码中,我们获取了2021年6月份的总天数并打印输出。
import calendar # 获取6月份的总天数 month_days = calendar.monthrange(2021, 6)[1] print("2021年6月份总共有{}天".format(month_days))
输出结果:2021年6月份总共有30天。
二、获取一段时间内每个月份的总天数
有时候我们需要获取一段时间内每个月份的总天数。下面代码使用了datetime模块和calendar模块来实现这一功能。
import calendar import datetime def get_month_days(start_date, end_date): month_days = [] current_date = start_date.replace(day=1) while current_date <= end_date: month_days.append(calendar.monthrange(current_date.year, current_date.month)[1]) current_date += datetime.timedelta(days=1) return month_days # 获取2021年第3月至第6月份每月的总天数 start_date = datetime.date(year=2021, month=3, day=1) end_date = datetime.date(year=2021, month=6, day=30) month_days = get_month_days(start_date, end_date) print(month_days)
输出结果:[31, 28, 31, 30],表示2021年3月份总共31天,4月份总共28天,5月份总共31天,6月份总共30天。
三、判断某一年是否为闰年
闰年是指公历年份可以被4整除,但是不能被100整除,或者可以被400整除的年份。我们可以使用calendar模块中的isleap()函数来判断一个年份是否为闰年。下面代码中,我们判断了2000年(是闰年)、2001年(不是闰年)和2004年(是闰年)是否为闰年。
import calendar print("2000年是否为闰年:{}".format(calendar.isleap(2000))) print("2001年是否为闰年:{}".format(calendar.isleap(2001))) print("2004年是否为闰年:{}".format(calendar.isleap(2004)))
输出结果:2000年是否为闰年:True;2001年是否为闰年:False;2004年是否为闰年:True。
四、获取某年所有月份的总天数
我们有时候需要获取某一年份所有月份的总天数。下面代码中,我们使用了一个字典month_dict,其中键为月份,值为该月份的总天数。通过循环遍历,我们可以获取某一年所有月份的总天数。
import calendar # 获取2021年所有月份的总天数 year = 2021 month_dict = {} for month in range(1, 13): month_dict[month] = calendar.monthrange(year, month)[1] print(month_dict)
输出结果:{1: 31, 2: 28, 3: 31, 4: 30, 5: 31, 6: 30, 7: 31, 8: 31, 9: 30, 10: 31, 11: 30, 12: 31},表示2021年1月份总共31天,2月份总共28天(不是闰年),...,12月份总共31天。