前情提示: 测试代码中,右尖括号(>
)表示命令行中输入的命令; 单独一行并以井字符(#
)开头的为输出内容; 库的导入仅在本文的第一个测试代码中展现,其他代码块均省略库的导入代码。
- 系统类型:
Windows 10
- python 版本:
Python 3.9.0
calendar
模块提供了与日历有关的函数与类。其中既包含了可方便用于计算或信息处理的日历格式,也包含了可直观展示的日历格式,甚至有用于网页展示的 html
格式.
calendar
模块提供了三个类,也提供了一些属性和函数进行快捷操作。calendar
模块提供的函数将分布在同功能的类中介绍。
calendar
模块提供了 4
个属性,所有属性返回的数据都是可迭代对象:
calendar.day_name
: 在当前语言环境下表示星期几的数组calendar.day_abbr
: 在当前语言环境下表示星期几缩写的数组calendar.month_name
: 在当前语言环境下表示一年中月份的数组。这里为了现实习惯,一月的月号为1
,所以此数组的元素个数为13
个,其中索引值为0
的元素的值为空calendar.month_abbr
: 在当前语言环境下表示月份简写的数组。这里为了现实习惯,一月的月号为1
,所以此数组的元素个数为13
个,其中索引值为0
的元素的值为空
print(list(calendar.day_name))
# ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday']
print(list(calendar.day_abbr))
# ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
print(list(calendar.month_name))
# ['', 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']
print(list(calendar.month_abbr))
# ['', 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
Calendar 类
class calendar.Calendar(firstweekday=0)
参数:
firstweekday: int, 指定一周的第一天, 0 表示星期一, 6 表示星期天, 默认为 0
创建已 Calendar
对象,Calendar
对象提供了一些方法,这些方法可以用于各种场景的与日历有关的数据,得到的数据并不便于查看,但方便计算。
iterweekdays()
iterweekdays()
返回值:
可迭代对象
返回一个可迭代对象,包含一星期对应的枚举值,排序在第一个元素的枚举值与类参数 firstweekday
的值一致。
import calendar
cc = calendar.Calendar(1)
print(list(cc.iterweekdays()))
# [1, 2, 3, 4, 5, 6, 0]
cc = calendar.Calendar(4)
print(list(cc.iterweekdays()))
# [4, 5, 6, 0, 1, 2, 3]
PS: 无论一周的第一天设置为星期几,这与七天中每天对应的枚举值无关。星期一的枚举值一定是 0
,星期二的枚举值一定是 1
,以此类推,星期天的枚举值一定是 6
。
itermonthdates()
itermonthdates(year, month)
参数:
year: 年
month: 月
返回值:
可迭代对象
返回一个可迭代对象,包含某年某月当月的全部日期,日期对象为 datetime
对象。
若本月月初和月末不是一个完整的周,也会返回其他月份的日期用于组成一个完整的日期。也就是说某一周的日期里,包含指定月份的日期,也包含其他月份的日期,那么本方法返回的日期中也包含这些在同一周内的其他月份的日期。
cc = calendar.Calendar(0)
print(list(cc.itermonthdates(2021, 1)))
# [
# datetime.date(2020, 12, 28), datetime.date(2020, 12, 29),
# datetime.date(2020, 12, 30), datetime.date(2020, 12, 31),
# datetime.date(2021, 1, 1), datetime.date(2021, 1, 2),
# ......
# datetime.date(2021, 1, 30), datetime.date(2021, 1, 31)
# ]
PS: 此模块的一些方法返回值内容过多,此文章将会省略一部分返回内容。