日期和时间模块-calendar日历模块
calendar模块
查看calendar模块有哪些函数或方法:
| |
周一到周日
看源码可知(MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY) = range(7),可知周一到周日是以数字0、1、2、3、4、5、6表示的。
| |
每周的第一天
calendar默认将周一作为每周的第一天,你可以使用setfirstweekday(weekday)和firstweekday()来分别设置和获取每周的第一天:
| |
闰年判断
使用calendar.isleap(year)判断年份year是否为闰年,是闰年时返回True,否则返回False:
| |
两个年份之间有多少个闰年
使用calendar.leapdays(y1, y2)获取两个年份之间有多少个闰年,包含y1年份,不包含y2年份,源码中并没有判断y1年份必须比y2年份小:
| |
指定日期为周几
calendar.weekday(year, month, day)可以获取指定日期是周几:
| |
返回包含英文星期缩写的字符
calendar.weekheader(n)可以返回包含英文星期缩写的字符,n指定周一至周日英文字符的宽度:
| |
月份的第一天是周几,月份有多少天
calendar.monthrange(year, month)可以返回指定月份的第一天是周几,以及该月的天数。
| |
指定月份的日历列表
calendar.monthcalendar(year, month)可以返回指定月份的列表,每行代表一个星期,该月份以外的日期以0替代,默认以周一作为每周的第一天:
| |
打印指定月份的日历
calendar.prmonth(theyear, themonth, w=0, l=0)可以打印指定月份的日历,w指定星期字符的宽度,默认为0,内部限制至少为2; l指定两周之间换几行,默认值为0,内部限制至少换1行,实验可以发现l参数保持默认比较好,看起来比较紧凑:
| |
返回指定月份的多行文本字符串
calendar.month(theyear, themonth, w=0, l=0)可以返回指定月份的多行文本字符串,与calendar.prmonth(theyear, themonth, w=0, l=0)设置类似,可以理解为calendar.prmonth将calendar.month的返回值打印出来了:
| |
打印指定年份的日历
calendar.prcal(year, w=0, l=0, c=6, m=3)打印指定年份的日历,w指定星期宽度,l指定换行,与上面的prmonth配置相同,c指定两列月份之间的空隔距离,m指定日历中显示几列月份
| |
返回年份日历的多行文本字符串
calendar.calendar(year, w=2, l=1, c=6, m=3)可以返回年份日历的多行文本字符串,参数与calendar.prcal(year, w=0, l=0, c=6, m=3)相同。
| |
获取时间戳值
calendar.timegm(tuple)是一个不相关但很方便的函数,tuple参数可以是由time.gmtime()函数返回的时间元组,返回相应的Unix时间戳值。实际上,time.gmtime()和calendar.timegm()功能正好相反。
| |
calendar日历模块的数据属性
calendar.day_name: 当前语言环境下星期(每周的第一天到最后一天)组成的数组。calendar.day_abbr: 当前语言环境下星期(每周的第一天到最后一天)缩写组成的数组。calendar.month_name: 当前语言环境下一年中月份组成的数组,长度为13,第一个元素为空,是为了让January作为1号元素,与实际约定保持一致。calendar.month_abbr: 当前语言环境下一年中月份缩写组成的数组,长度为13,第一个元素为空,是为了让January作为1号元素,与实际约定保持一致。
| |
设置locale本地化后获取日历模块数据属性
| |
可以发现获取日历模块的数据属性时,根据当前语言环境不同,获取的结果是不一样的,相应的使用calendar模块其他函数或方法获取到的结果也可能会受语言环境影响,请注意此问题。
calendar模块中还定义了calendar.Calendar类,calendar.TextCalendar类,calendar.HTMLCalendar类,calendar.LocaleTextCalendar类以及calendar.LocaleHTMLCalendar类,此处不展开。详细可参考https://docs.python.org/3.6/library/calendar.html
