进阶第十课 Python模块之calendar

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。

posted @ 2018-03-30 20:06  驼背蜗牛  阅读(446)  评论(1编辑  收藏  举报