赞
踩
如果您想知道某一天是星期几,某个月有多少个周末...那么,日历对您来说非常方便。您的办公桌有制作精美的日历,手机里也有日历,电脑里也有日历,随手可得。
但是,如果我们要在代码中处理日历,我们不可能自己查好,然后手动写到代码中,那样代码将会被写死,不合理,也很难维护。
在Python中提供了calendar模块,为我们对日历做处理提供了很多方法,使用起来非常方便。
一、打印一年的年历
- # coding=utf-8
- import calendar
-
- print(calendar.calendar(3019, w=4, l=1, c=6, m=4))
运行结果:
- 3019
-
- January February March April
- Mon Tue Wed Thu Fri Sat Sun Mon Tue Wed Thu Fri Sat Sun Mon Tue Wed Thu Fri Sat Sun Mon Tue Wed Thu Fri Sat Sun
- 1 2 3 1 2 3 4 5 6 7 1 2 3 4 5 6 7 1 2 3 4
- 4 5 6 7 8 9 10 8 9 10 11 12 13 14 8 9 10 11 12 13 14 5 6 7 8 9 10 11
- 11 12 13 14 15 16 17 15 16 17 18 19 20 21 15 16 17 18 19 20 21 12 13 14 15 16 17 18
- 18 19 20 21 22 23 24 22 23 24 25 26 27 28 22 23 24 25 26 27 28 19 20 21 22 23 24 25
- 25 26 27 28 29 30 31 29 30 31 26 27 28 29 30
-
- May June July August
- Mon Tue Wed Thu Fri Sat Sun Mon Tue Wed Thu Fri Sat Sun Mon Tue Wed Thu Fri Sat Sun Mon Tue Wed Thu Fri Sat Sun
- 1 2 1 2 3 4 5 6 1 2 3 4 1
- 3 4 5 6 7 8 9 7 8 9 10 11 12 13 5 6 7 8 9 10 11 2 3 4 5 6 7 8
- 10 11 12 13 14 15 16 14 15 16 17 18 19 20 12 13 14 15 16 17 18 9 10 11 12 13 14 15
- 17 18 19 20 21 22 23 21 22 23 24 25 26 27 19 20 21 22 23 24 25 16 17 18 19 20 21 22
- 24 25 26 27 28 29 30 28 29 30 26 27 28 29 30 31 23 24 25 26 27 28 29
- 31 30 31
-
- September October November December
- Mon Tue Wed Thu Fri Sat Sun Mon Tue Wed Thu Fri Sat Sun Mon Tue Wed Thu Fri Sat Sun Mon Tue Wed Thu Fri Sat Sun
- 1 2 3 4 5 1 2 3 1 2 3 4 5 6 7 1 2 3 4 5
- 6 7 8 9 10 11 12 4 5 6 7 8 9 10 8 9 10 11 12 13 14 6 7 8 9 10 11 12
- 13 14 15 16 17 18 19 11 12 13 14 15 16 17 15 16 17 18 19 20 21 13 14 15 16 17 18 19
- 20 21 22 23 24 25 26 18 19 20 21 22 23 24 22 23 24 25 26 27 28 20 21 22 23 24 25 26
- 27 28 29 30 25 26 27 28 29 30 31 29 30 27 28 29 30 31

最开始就先打印一年的日历,主要是效果很明显,两行代码就能打印出年历。
calendar.calendar(year,w=2,l=1,c=6,w=3),返回一个字符串格式的年历。
year接收一个年份数字,可以是过去现在或未来,比如我这里打印的是1千年以后的3019年。
w表示个位天数相邻两天之间的间隔宽度(字符空格数),默认是2,在1号和2号中间有两个字符的空格,在10号和11号之间是1个空格,(当然是不换行的时候),同时当w是2时,周一至周日的英文缩写只有两个字母。w如果小于2,都是取默认值2,w如果大于2时,相邻两天的间隔也跟着增大,周一至周日的英文缩写为3个字母,当w到9时,周一至周日的英文不缩写,(最长的单词是9个字母)。
l表示每一个周占用的行数,默认是1,如果是2,则第一周和第二周中间会空一行,以此类推。小于1时,取1。
c表示并排的两个月之间的间隔宽度,默认是6。但是c不小于w。即当c值小于w时,c等于w。
m表示并排展示多少个月。默认是3,显示一排3个月,会显示4排。我们可以设置大于等于1的数,最多就是一排展示完12个月。m等于0会报错,小于0不打印日历。
默认情况下,一周的第一天(显示在最左边的)是星期一Monday。可以使用calendar.setfirstweekday(num)函数设置,给num传入0至6的整数,0到6依次表示星期一到星期日,传其他数报错。可以使用calendar.firstweekday()获取当前最左边的是星期几,返回值是0到6的整数。
另外,calendar.prcal(year,w=2,l=1,c=6, w=3)也是打印一年的年历,相当于print(calendar.calendar(year,w,l,c)),打印年历后不换行。
二、打印一个月的月历
- import calendar
-
-
- print("month: \n", calendar.month(2019, 10, w=0, l=0))
- # calendar.prmonth(2019, 10, w=0, l=0)
- print("monthcalendar: ", calendar.monthcalendar(2019, 11))
- # 返回两个数,这个月的第一天是星期几,这个月有多少天
- print("monthrange: ", calendar.monthrange(2019, 10))
运行结果:
- month:
- October 2019
- Mo Tu We Th Fr Sa Su
- 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
-
- monthcalendar: [[0, 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, 0]]
- monthrange: (1, 31)
calendar.month(year, month, w=2, l=1)返回指定年和月的月历。
w和l这两个参数和上面打印年历中的一样。
calendar.prmonth(year, month, w=2, l=1)也是打印月历,相当于print(calendar.month(year, month, w=2, l=1)),打印完成不换行。
calendar.monthcalendar(year,month)返回一个嵌套列表。每个子列表是一个星期的日期编号,在第一个周和最后一个周,如果不满7天,则补0,将子列表的长度补到7。
calendar.monthrange(year,month)返回一个元组,元组中有两个整数。第一个表示这个月的1号是星期几,第二个表示这个月有多少天。
三、calendar模块其他方法
- import calendar
-
-
- tupletime = (2020, 10, 1, 8, 30, 30)
- print(calendar.timegm(tupletime))
- print(calendar.weekday(2019, 12, 1))
- print(calendar.isleap(2020))
- print(calendar.leapdays(2019, 2021))
运行结果:
- 1601541030
- 6
- True
- 1
calendar.timegm(tupletime)接受一个时间元组,返回时间戳,时间元组的值依次表示年、月、日、时、分、秒。
calendar.weekday(year,month,day)返回传入的日期是星期几。
calendar.isleap(year)返回传入的年是不是闰年,是返回True,否则为false。如2020年是闰年。
calendar.leapdays(start, end)返回start,end之间有多少个闰年,左闭右开区间。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。