python判断当天是否是当月最后一天
以下是两种在Python中判断当天是否为当月最后一天的方法:
方法一:使用 calendar
模块(推荐)
import datetime
import calendartoday = datetime.date.today()
_, last_day_num = calendar.monthrange(today.year, today.month)
is_last_day = (today.day == last_day_num)print(f"今天是本月最后一天吗?{is_last_day}")
原理:
calendar.monthrange(year, month)
返回一个元组 (weekday, days_in_month)
,其中 days_in_month
直接给出当月的最后一天日期号。
方法二:纯 datetime
模块(无需额外依赖)
import datetimetoday = datetime.date.today()# 计算下个月的第一天
if today.month == 12:next_month = datetime.date(today.year + 1, 1, 1)
else:next_month = datetime.date(today.year, today.month + 1, 1)# 下个月第一天减1天即为当月最后一天
last_day_of_month = next_month - datetime.timedelta(days=1)
is_last_day = (today == last_day_of_month)print(f"今天是本月最后一天吗?{is_last_day}")
原理:
通过计算下个月的第一天(处理12月跨年逻辑),再减去1天得到当月最后一天,最后直接比较日期。
执行结果示例
- 若当天是最后一天(如2023-04-30):
今天是本月最后一天吗?True
- 若不是最后一天(如2023-04-29):
今天是本月最后一天吗?False
关键点说明
- 时区问题:默认使用系统本地时间,若需处理其他时区,可用
pytz
库调整时区。 - 闰年兼容:两种方法均自动处理闰年(如2020-02-29)。
- 性能差异:
calendar
方法更简洁,datetime
方法无需额外导入模块。
根据实际需求选择即可!