目 录CONTENT

文章目录

Python日历模块-calendar

~梓
2025-03-30 / 0 评论 / 0 点赞 / 17 阅读 / 0 字
温馨提示:
部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

Python 的 calendar 模块是标准库中的一个重要模块,提供了强大的日期计算、日历格式化以及闰年计算功能。无论是在日常开发还是数据处理过程中,它都能极大地提高效率。本文将详细介绍 calendar 模块的所有主要功能及其应用。

一、calendar 模块概述

calendar 模块主要用于处理与日历相关的操作,包括:

  • 获取某年的日历
  • 获取某个月的日历
  • 计算某天是星期几
  • 判断是否为闰年
  • 处理国际化日历格式

此外,calendar 还提供了一些异常类,以便在非法输入时抛出错误。

二、calendar 模块的异常类

1. IllegalMonthError

IllegalMonthErrorValueError 的子类,当输入的月份不在 1 到 12 之间时,会引发该异常。例如:

import calendar
try:
    calendar.month(2024, 13)  # 13 月是非法的
except calendar.IllegalMonthError as e:
    print(f"错误: {e}")

2. IllegalWeekdayError

IllegalWeekdayError 继承自 ValueError,当输入的星期值超出 0(周一)到 6(周日)的范围时,会抛出该异常。例如:

try:
    calendar.setfirstweekday(7)  # 非法的星期值
except calendar.IllegalWeekdayError as e:
    print(f"错误: {e}")

三、calendar 模块的主要函数

1. 设置和获取每周的第一天

  • setfirstweekday(weekday): 设置一周的第一天。
  • firstweekday(): 获取当前设置的第一天。
calendar.setfirstweekday(calendar.SUNDAY)
print(calendar.firstweekday())

2. 闰年相关函数

  • isleap(year): 判断某年是否为闰年。
  • leapdays(y1, y2): 计算 y1y2(不含 y2)之间的闰年数量。
print(calendar.isleap(2024))  # True
print(calendar.leapdays(2000, 2025))

3. 日期计算函数

  • weekday(year, month, day): 获取某天是星期几。
  • monthrange(year, month): 获取某月的第一天是星期几,以及该月的天数。
print(calendar.weekday(2024, 3, 30))  # 5(星期六)
print(calendar.monthrange(2024, 3))  # (4, 31)

4. 生成月历和年历

  • monthcalendar(year, month): 以列表形式返回该月的周视图。
  • prmonth(year, month): 直接打印格式化的日历。
  • month(year, month): 返回该月的日历字符串。
  • prcal(year): 打印全年日历。
  • calendar(year): 返回全年日历字符串。
print(calendar.month(2024, 3))
calendar.prcal(2024)

5. 时间转换函数

  • timegm(tuple): 将 UTC 时间元组转换为时间戳。
import time
print(calendar.timegm((2024, 3, 30, 0, 0, 0, 5, 90, 0)))

四、calendar 模块的常量

1. 月份和星期名称

  • month_namemonth_abbr: 获取月份的全名和缩写。
  • day_nameday_abbr: 获取星期几的全名和缩写。
print(calendar.month_name[3])  # March
print(calendar.day_name[5])  # Saturday

五、calendar 模块的日历类

1. Calendar

提供 itermonthdays() 方法用于遍历月份的天数。

cal = calendar.Calendar()
print(list(cal.itermonthdays(2024, 3)))

2. TextCalendar

生成文本格式的日历。

text_cal = calendar.TextCalendar()
print(text_cal.formatmonth(2024, 3))

3. HTMLCalendar

生成 HTML 格式的日历。

html_cal = calendar.HTMLCalendar()
print(html_cal.formatmonth(2024, 3))

4. LocaleTextCalendarLocaleHTMLCalendar

提供本地化支持的文本和 HTML 格式日历。

六、获取星期标题

  • weekheader(n): 返回星期标题。
print(calendar.weekheader(3))  # Mon Tue Wed

七、总结

calendar 模块提供了丰富的日历处理功能,包括日期计算、格式化输出、国际化支持等。掌握这些功能可以大幅提升日期相关任务的处理效率。

0

评论区