当前位置:首页>python>Python拓展模块:calendar

Python拓展模块:calendar

  • 2026-10-11 16:09:33
Python拓展模块:calendar

Python 内置的 calendar 模块用于处理日历和日期相关的功能。它不仅可以生成文本或 HTML 日历,还可以把日历数据列表化,方便制作电子日历、统计工作日、周末或节假日。


 一、模块主要功能 

① 判断年份是否为闰年

import calendarcalendar.isleap(2024)  # True

② 计算年份间的闰年数量

calendar.leapdays(2000, 2026)

③ 获取月日历矩阵(列表化)

month_matrix = calendar.monthcalendar(2026, 4)# 每个子列表代表一周,0 表示空白日期

④ 获取星期信息

weekday_index=calendar.weekday(2026, 4, 5)  # 0=周一, 6=周日weekday_name=calendar.day_name[weekday_index]  # 'Sunday'

⑤ 设置周起始日

calendar.setfirstweekday(calendar.SUNDAY)
⑥ 生成文本或 HTML 日历

文本日历:

text_cal=calendar.TextCalendar(calendar.MONDAY)print(text_cal.formatmonth(2026, 4))

HTML 日历:

html_cal=calendar.HTMLCalendar(calendar.MONDAY)html_code=html_cal.formatmonth(2026, 4)

 二、常用函数与打印函数 

函数/方法
功能
返回类型 / 输出
calendar.calendar(year)
生成整年文本日历
字符串,需 print()
calendar.prcal(year)
打印整年文本日历
None,直接打印
calendar.month(year, month)
生成指定月份文本日历
字符串,需 print()
calendar.prmonth(year, month)
打印指定月份文本日历
None,直接打印
calendar.isleap(year)
判断闰年
布尔值
calendar.leapdays(y1, y2)
计算年份间闰年数
整数
calendar.monthcalendar(year, month)
返回月日历矩阵
二维列表
calendar.weekday(year, month, day)
返回星期索引
0-6
calendar.day_name
 / calendar.day_abbr
星期名称
可迭代对象
calendar.timegm(tuple_time)
UTC 时间元组转时间戳
整数

示例:

import calendarprint(calendar.month(2026, 4))calendar.prmonth(2026, 4)calendar.prcal(2026)

 三、日历列表化与电子日历制作 

① 月日历列表化

month_list = [[day if day != 0 else None for day in week]               for week in calendar.monthcalendar(2026, 4)]

输出每周日期列表,可直接用于电子日历或表格。

② 整年日历列表化

cal = calendar.Calendar()year_days = [(month, day) for month in range(1, 13)              for day in cal.itermonthdays(2026, month) if day != 0]

生成全年日期列表,可用于数据库或 CSV 导出。

③ HTML 日历生成

html_cal = calendar.HTMLCalendar(calendar.MONDAY)html_code = html_cal.formatmonth(2026, 4)with open("april_2026.html", "w") as f:    f.write(html_code)

可直接在网页或 GUI 中显示电子日历。


 四、与日历相关的计算 

① 计算周数

month_matrix = calendar.monthcalendar(2026, 4)week_number = next(i+1 for i, week in enumerate(month_matrix) if 5 in week)

② 统计某月工作日

workdays = [day for day, wd in calendar.Calendar().itermonthdays2(2026, 4) if day != 0 and wd < 5]print(f"工作日数量: {len(workdays)}")

③ 找某月周末

weekends = [day for day, wd in calendar.Calendar().itermonthdays2(2026, 4) if day != 0 and wd >= 5]

④ 固定节日计算

import datetimeholiday = datetime.date(2026, 7, 4)print(calendar.day_name[holiday.weekday()])  # 'Saturday'

五、应用场景

  • 打印文本日历或生成 HTML 日历展示
  • 制作电子日历(列表化日期,标记工作日和周末)
  • 统计工作日、周末和节假日
  • 与 datetime 配合进行日期计算、倒计时或提醒功能

最新文章

随机文章