进阶第十课 Python模块之calendar

本文详细介绍了Python中的calendar模块,包括其主要类型如Calendar、TextCalendar等,以及关键方法如isleap、monthcalendar等的使用方法。同时展示了如何通过具体实例操作日期和时间。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

calendar,是与日历相关的模块。calendar模块文件里定义了很多类型,主要有Calendar,TextCalendar以及HTMLCalendar类型。其中,Calendar是TextCalendar与HTMLCalendar的基类。该模块文件还对外提供了很多方法,例如:calendar,month,prcal,prmonth之类的方法。

星期一是默认的每周第一天,星期天是默认的最后一天。更改设置需调用calendar.setfirstweekday()函数。

可以看这个链接:

https://www.cnblogs.com/keqipu/p/7228502.html

>>> import calendar
>>> dir(calendar)
['Calendar', 'EPOCH', 'FRIDAY', 'February', 'HTMLCalendar', 'IllegalMonthError', 'IllegalWeekdayError', 'January', 'LocaleHTMLCalendar', 'LocaleTextCalendar', 'MONDAY', 'SATURDAY', 'SUNDAY', 'THURSDAY', 'TUESDAY', 'TextCalendar', 'WEDNESDAY', '_EPOCH_ORD', '__all__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', '_colwidth', '_locale', '_localized_day', '_localized_month', '_spacing', 'c', 'calendar', 'datetime', 'day_abbr', 'day_name', 'different_locale', 'error', 'firstweekday', 'format', 'formatstring', 'isleap', 'leapdays', 'main', 'mdays', 'month', 'month_abbr', 'month_name', 'monthcalendar', 'monthrange', 'prcal', 'prmonth', 'prweek', 'repeat', 'setfirstweekday', 'sys', 'timegm', 'week', 'weekday', 'weekheader']

1、calendar.calendar(year,w=2,l=1,c=6) 
返回一个多行字符串格式的year年年历,3个月一行,间隔距离为c。每日宽度间隔为w字符。每行长度为21* W+18+2* C。l是每星期行数。

calendar.calendar(2018,w=2,l=1,c=6)
'                                  2018\n\n      January                   February                   March\nMo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su\n 1  2  3  4  5  6  7                1  2  3  4                1  2  3  4\n 8  9 10 11 12 13 14       5  6  7  8  9 10 11       5  6  7  8  9 10 11\n15 16 17 18 19 20 21      12 13 14 15 16 17 18      12 13 14 15 16 17 18\n22 23 24 25 26 27 28      19 20 21 22 23 24 25      19 20 21 22 23 24 25\n29 30 31                  26 27 28                  26 27 28 29 30 31\n\n       April                      May                       June\nMo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su\n                   1          1  2  3  4  5  6                   1  2  3\n 2  3  4  5  6  7  8       7  8  9 10 11 12 13       4  5  6  7  8  9 10\n 9 10 11 12 13 14 15      14 15 16 17 18 19 20      11 12 13 14 15 16 17\n16 17 18 19 20 21 22      21 22 23 24 25 26 27      18 19 20 21 22 23 24\n23 24 25 26 27 28 29      28 29 30 31               25 26 27 28 29 30\n30\n\n        July                     August                  September\nMo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su\n                   1             1  2  3  4  5                      1  2\n 2  3  4  5  6  7  8       6  7  8  9 10 11 12       3  4  5  6  7  8  9\n 9 10 11 12 13 14 15      13 14 15 16 17 18 19      10 11 12 13 14 15 16\n16 17 18 19 20 21 22      20 21 22 23 24 25 26      17 18 19 20 21 22 23\n23 24 25 26 27 28 29      27 28 29 30 31            24 25 26 27 28 29 30\n30 31\n\n      October                   November                  December\nMo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su\n 1  2  3  4  5  6  7                1  2  3  4                      1  2\n 8  9 10 11 12 13 14       5  6  7  8  9 10 11       3  4  5  6  7  8  9\n15 16 17 18 19 20 21      12 13 14 15 16 17 18      10 11 12 13 14 15 16\n22 23 24 25 26 27 28      19 20 21 22 23 24 25      17 18 19 20 21 22 23\n29 30 31                  26 27 28 29 30            24 25 26 27 28 29 30\n                                                    31\n'

2、calendar.firstweekday( ) 
返回当前每周起始日期的设置。默认情况下,首次载入caendar模块时返回0,即星期一。

>>> calendar.firstweekday()
0

3、calendar.isleap(year) 

是闰年返回True,否则为false。

>>> calendar.isleap(2008)
True
>>> calendar.isleap(2012)
True
>>> calendar.isleap(2018)
False
>>> calendar.isleap(year=2012)
True

4、calendar.leapdays(y1,y2) 
返回在Y1,Y2两年之间的闰年总数。 

>>> calendar.leapdays(2000,2008)
2
>>> calendar.leapdays(2000,2009)
3
>>> calendar.leapdays(2000,2002)
1
>>> calendar.leapdays(2001,2004)
0

可以从上述示例中看出,leapdays后面两个参数,实际抽取时,不包含第二个参数。即第二个参数即使是闰年,也不做统计。

5、calendar.month(year,month,w=2,l=1) 
返回一个多行字符串格式的year年month月日历,两行标题,一周一行。每日宽度间隔为w字符。每行的长度为7* w+6。l是每星期的行数。

>>> calendar.month(2018,4,w=2,l=1)
'     April 2018\nMo Tu We Th Fr Sa Su\n                   1\n 2  3  4  5  6  7  8\n 9 10 11 12 13 14 15\n16 17 18 19 20 21 22\n23 24 25 26 27 28 29\n30\n'

6、calendar.monthcalendar(year,month) 

返回一个整数的单层嵌套列表。每个子列表装载代表一个星期的整数。Year年month月外的日期都设为0;范围内的日子都由该月第几日表示,从1开始。

>>> calendar.monthcalendar(2018,4)
[[0, 0, 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, 0, 0, 0, 0, 0]]

2018-4-1是周日,所以在第一个字列表,前六天都是2018年3月的,也就是都是0;同理4月30日之后的也都是0。

7、calendar.monthrange(year,month) 

返回两个整数。第一个是该月的星期几的日期码,第二个是该月的日期码。日从0(星期一)到6(星期日);月从1到12。

>>> calendar.monthrange(2018,4)
(6, 30)

8、calendar.prcal(year,w=2,l=1,c=6) 

相当于 print calendar.calendar(year,w,l,c).

 

9、calendar.prmonth(year,month,w=2,l=1) 

相当于 print calendar.calendar(year,w,l,c)。

 

10、calendar.setfirstweekday(weekday) 
设置每周的起始日期码。0(星期一)到6(星期日)。

>>> calendar.firstweekday ()
0
>>> calendar.setfirstweekday(6)
>>> calendar.firstweekday()
6

之后我关闭了IDLE后重新启动,再次执行firstweekday看下结果

>>> import calendar
>>> calendar.firstweekday()
0

恢复原样。。

11、calendar.timegm(tupletime) 
和time.gmtime相反:接受一个时间元组形式,返回该时刻的时间戳。

>>> import time
>>> time.time()
1523336550.8926055
>>> time.gmtime(1523336550.8926055)
time.struct_time(tm_year=2018, tm_mon=4, tm_mday=10, tm_hour=5, tm_min=2, tm_sec=30, tm_wday=1, tm_yday=100, tm_isdst=0)
>>> import calendar
>>> calendar.timegm((2018, 4, 10, 5, 2, 30, 1, 100, 0))
1523336550

12、calendar.weekday(year,month,day) 
返回给定日期的日期码。0(星期一)到6(星期日)。月份为 1(1月)到 12(12月)

>>> calendar.weekday(2018,4,1)
6

2018-4-1是周日,所以返回值是6。

转载于:https://www.cnblogs.com/tuobeiwoniu/p/8678296.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值