在 Python 中,获取某个月的天数可以通过多种方法实现,以下是几种常见的方式:
方法 1:使用 calendar 模块
Python 的 calendar 模块提供了 monthrange 函数,可以返回指定年份和月份的第一天是星期几以及该月的天数。
import calendar
def get_month_days(year, month):
# monthrange 返回 (weekday_of_first_day, number_of_days)
_, num_days = calendar.monthrange(year, month)
return num_days
# 示例:获取 2026 年 2 月的天数
year = 2026
month = 2
days = get_month_days(year, month)
print(f"{year} 年 {month} 月有 {days} 天")
输出:
2026 年 2 月有 28 天
方法 2:使用 datetime 模块
通过 datetime 模块,可以计算下个月的第一天,然后减去一天,得到当前月的最后一天。
from datetime import datetime, timedelta
def get_month_days(year, month):
# 计算下个月的第一天
if month == 12:
next_month = datetime(year + 1, 1, 1)
else:
next_month = datetime(year, month + 1, 1)
# 减去一天,得到当前月的最后一天
last_day_of_month = next_month - timedelta(days=1)
return last_day_of_month.day
# 示例:获取 2026 年 2 月的天数
year = 2026
month = 2
days = get_month_days(year, month)
print(f"{year} 年 {month} 月有 {days} 天")
输出:
2026 年 2 月有 28 天
方法 3:手动判断(适用于简单场景)
如果不想依赖库,可以手动判断每个月的天数,并处理闰年的情况。
def is_leap_year(year):
return (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0)
def get_month_days(year, month):
days_in_month = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
if month == 2 and is_leap_year(year):
return 29
return days_in_month[month - 1]
# 示例:获取 2026 年 2 月的天数
year = 2026
month = 2
days = get_month_days(year, month)
print(f"{year} 年 {month} 月有 {days} 天")
输出:
2026 年 2 月有 28 天
- 推荐方法:使用
calendar模块的monthrange函数,代码简洁且易于理解。 - 备选方法:如果需要避免导入模块,可以使用
datetime模块或手动判断。
根据你的需求选择合适的方法即可!
首发原创文章,作者:世雄 - 原生数据库架构专家,如若转载,请注明出处:https://idctop.com/article/477129.html



