此模块允许你输出类似Unix cal程序的日历,并提供与日历相关的其他有用功能。值得注意的是,默认情况下,这些日历将星期一作为一周的第一天,将星期日作为一周的最后一天(欧洲惯例)。不过,我们可以使用setfirstweekday()
方法来设置一周的第一天为星期日或h者其他工作日,指定的日期以整数形式给出。
calendar模块主要由Calendar
类与一些模块方法构成,Calendar
类又衍生了一些子孙类来帮助我们实现一些特殊的功能
Calendar
模块方法
- setfirstweekday(firstweekday):指定一周的第一天,0是星期一,…,6为星期日
import calendar
# 将星期日设置为一周第一天
calendar.setfirstweekday(firstweekday=6)
- firstweekday():返回一周的第一天,0是星期一,…,6为星期日
import calendar
# 将星期日设置为一周第一天
calendar.setfirstweekday(firstweekday=6)
print(calendar.firstweekday()) # 6
- isleap(year):判断指定是否是闰年,闰年为True,平年为False
import calendar
# 2018年是平年,所以为False
print(calendar.isleap(2018)) # False
# 2008年是如年,所以为True
print(calendar.isleap(2008)) # True
- leapdays(y1, y2):返回
y1
与y2
年份之间的闰年数量,y1
与y2
皆为年份。包括起始年,不包括结束年:
import calendar
# 2008到2011之间只有2008年是闰年,所以数量为1
print(calendar.leapdays(2008, 2011)) # 1
- weekday(year, month, day):获取指定日期为星期几
import calendar
# 2018-08-08正是星期三,千万别忘记2代表的是星期三
print(calendar.weekday(2018, 8, 8)) # 2
- weekheader(n):返回包含星期的英文缩写,
n
表示英文缩写所占的宽度
import calendar
print(calendar.weekheader(4))
############### 打印结果如下 ###############
Mon Tue Wed Thu Fri Sat Sun
- monthrange(year, month):返回一个由一个月第一个天的星期与当前月的天数组成的元组
import calendar
# 查看日历可以知道,08-01正是星期三,并且8月共31天
print(2018, 8) # (2, 31)
- monthcalendar(year, month):返回一个月中天数列表(不是当前月份的天数为0),按周划分,为一个二维数组。包括月份开始那周的所有日期和月份结束那周的所有日期
import calendar
calendar.setfirstweekday(firstweekday=6)
print(calendar.monthcalendar(2018, 8))
############### 打印结果如下 ###############
[[0, 0, 0, 1, 2, 3, 4], [5, 6, 7, 8, 9, 10, 11], [12, 13, 14, 15, 16, 17, 18], [19, 20, 21, 22, 23, 24, 25], [26, 27, 28, 29, 30, 31, 0]]
- prmonth(theyear, themonth, w=0, l=0):打印一个月的日历,
theyear
指定年份,themonth
指定月份,w
每个单元格宽度,默认0,内部已做处理,最小宽度为2,l
每列换l行,默认为0,内部已做处理,至少换行1行
import calendar
calendar.setfirstweekday(firstweekday=6)
calendar.prmonth(2018, 8)
############### 打印结果如下 ###############
August 2018
Su Mo Tu We Th Fr Sa
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
- month(theyear, themonth, w=0, l=0):返回一个月的日历的多行文本字符串。
theyear
指定年份,themonth
指定月份,w
每个单元格宽度,默认0,内部已做处理,最小宽度为2,l
每列换l行,默认为0,内部已做处理,至少换行1行
import calendar
calendar.setfirstweekday(firstweekday=6)
print(calendar.month(2018, 8))
############### 打印结果如下 ###############
August 2018
Su Mo Tu We Th Fr Sa
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
- prcal(year, w=0, l=0, c=6, m=3):打印一年的日历,
w
每个单元格宽度,默认0,内部已做处理,最小宽度为2,l
每列换l行,默认为0,内部已做处理,至少换行1行,c
表示月与月之间的间隔宽度,默认为6,内部已做处理,最小宽度为2,m
表示将12个月分为m列
import calendar
calendar.setfirstweekday(firstweekday=6)
calendar.prcal(2018, m=4)
############### 打印结果如下 ###############
2018
January February March April
Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa
1 2 3 4 5 6 1 2 3 1 2 3 1 2 3 4 5 6 7
7 8 9 10 11 12 13 4 5 6 7 8 9 10 4 5 6 7 8 9 10 8 9 10 11 12 13 14
14 15 16 17 18 19 20 11 12 13 14 15 16 17 11 12 13 14 15 16 17 15 16 17 18 19 20 21
21 22 23 24 25 26 27 18 19 20 21 22 23 24 18 19 20 21 22 23 24 22 23 24 25 26 27 28
28 29 30 31 25 26 27 28 25 26 27 28 29 30 31 29 30
May June July August
Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa
1 2 3 4 5 1 2 1 2 3 4 5 6 7 1 2 3 4
6 7 8 9 10 11 12 3 4 5 6 7 8 9 8 9 10 11 12 13 14 5 6 7 8 9 10 11
13 14 15 16 17 18 19 10 11 12 13 14 15 16 15 16 17 18 19 20 21 12 13 14 15 16 17 18
20 21 22 23 24 25 26 17 18 19 20 21 22 23 22 23 24 25 26 27 28 19 20 21 22 23 24 25
27 28 29 30 31 24 25 26 27 28 29