亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Industrial programming >> Python

Python calendar 模块专家指南:代码示例详解

Python 内置 calendar 模块提供强大工具处理日期、月份、年份。利用 TextCalendar 和 HTMLCalendar 类,开发者可创建可打印或 Web 友好的日历、遍历日期、甚至计算自定义调度规则。

下面通过最常用用例分步演示,附带 Python 2/3 可直接运行的代码片段。

步骤 1:生成文本日历

运行以下脚本查看 2025 年 1 月以周四为每周起始的纯文本日历:

Python calendar 模块专家指南:代码示例详解

改为周日起始验证灵活性:

Python calendar 模块专家指南:代码示例详解

步骤 2:渲染 HTML 日历

Web 应用可用 HTMLCalendar 生成完整 HTML 表格,配合 CSS 样式:

Python calendar 模块专家指南:代码示例详解

步骤 3:遍历月份日期

itermonthdays 方法生成月份所有日期,包含相邻月份填充的零值,便于对齐日历:

Python calendar 模块专家指南:代码示例详解

步骤 4:获取本地化名称

Python 自动遵循系统区域设置输出月份和星期名称。下例展示打印 calendar.month_name 和 calendar.day_name 的输出:

Python calendar 模块专家指南:代码示例详解

不同机器区域设置不同,结果可能因用户所在国家而异。

步骤 5:计算自定义日期(如每月第一个周一)

以下简洁脚本查找 2025 年每月第一个周一:

Python calendar 模块专家指南:代码示例详解

逻辑使用 calendar.monthcalendar 获取周矩阵,检查前两周非零周一值。

Python 2 示例

import calendar
# 创建纯文本日历
c = calendar.TextCalendar(calendar.THURSDAY)
text = c.formatmonth(2025, 1)
print text
# 创建 HTML 格式日历
hc = calendar.HTMLCalendar(calendar.THURSDAY)
html = hc.formatmonth(2025, 1)
print html
# 遍历月份日期
for i in c.itermonthdays(2025, 4):
    print i
# 本地化月份和星期名称
for name in calendar.month_name:
    print name
for day in calendar.day_name:
    print day
# 查找每月第一个周一
for month in range(1, 13):
    mycal = calendar.monthcalendar(2025, month)
    week1 = mycal[0]
    week2 = mycal[1]
    if week1[calendar.MONDAY] != 0:
        auditday = week1[calendar.MONDAY]
    else:
        auditday = week2[calendar.MONDAY]
    print "%10s %2d" % (calendar.month_name[month], auditday)

Python 3 示例

import calendar
# 创建纯文本日历
c = calendar.TextCalendar(calendar.THURSDAY)
text = c.formatmonth(2025, 1)
print(text)
# 创建 HTML 格式日历
hc = calendar.HTMLCalendar(calendar.THURSDAY)
html = hc.formatmonth(2025, 1)
print(html)
# 遍历月份日期
for i in c.itermonthdays(2025, 4):
    print(i)
# 本地化月份和星期名称
for name in calendar.month_name:
    print(name)
for day in calendar.day_name:
    print(day)
# 查找每月第一个周一
for month in range(1, 13):
    mycal = calendar.monthcalendar(2025, month)
    week1 = mycal[0]
    week2 = mycal[1]
    if week1[calendar.MONDAY] != 0:
        auditday = week1[calendar.MONDAY]
    else:
        auditday = week2[calendar.MONDAY]
    print("%10s %2d" % (calendar.month_name[month], auditday))

核心要点

Python

  1. C# 抽象类实战教程:从定义到派生的完整代码示例
  2. C# Windows Forms 开发实战教程:从入门到进阶控件应用
  3. Python strip() 方法完全指南:去除首尾空白与自定义字符实战
  4. Python str.count() 完全指南:统计字符与子串出现次数实战
  5. Python round() 函数详解与实战示例
  6. 精通 Python map() 函数:语法、示例与最佳实践
  7. Python timeit():精准测量代码执行时间与实战示例
  8. 精通 Python yield:生成器 vs return 实战指南
  9. Python collections.Counter:高效计数、更新与算术运算
  10. Python list.count() 专家指南:语法、示例与性能解析
  11. Python list.index() 详解:查找元素位置的实用指南与示例
  12. Python C 扩展开发指南:构建高性能原生模块