Python 的 calendar
模块是标准库中的一个重要模块,提供了强大的日期计算、日历格式化以及闰年计算功能。无论是在日常开发还是数据处理过程中,它都能极大地提高效率。本文将详细介绍 calendar
模块的所有主要功能及其应用。
一、calendar
模块概述
calendar
模块主要用于处理与日历相关的操作,包括:
- 获取某年的日历
- 获取某个月的日历
- 计算某天是星期几
- 判断是否为闰年
- 处理国际化日历格式
此外,calendar
还提供了一些异常类,以便在非法输入时抛出错误。
二、calendar
模块的异常类
1. IllegalMonthError
IllegalMonthError
是 ValueError
的子类,当输入的月份不在 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)
: 计算y1
到y2
(不含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_name
和month_abbr
: 获取月份的全名和缩写。day_name
和day_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. LocaleTextCalendar
和 LocaleHTMLCalendar
提供本地化支持的文本和 HTML 格式日历。
六、获取星期标题
weekheader(n)
: 返回星期标题。
print(calendar.weekheader(3)) # Mon Tue Wed
七、总结
calendar
模块提供了丰富的日历处理功能,包括日期计算、格式化输出、国际化支持等。掌握这些功能可以大幅提升日期相关任务的处理效率。
评论区