源代码: Lib/calendar.py
默认情况下,将星期一作为一周的第一天,将星期日作为最后一天(欧洲惯例)。
1、Calendar 类
class calendar.Calendar([ firstweekday ] )
创建一个Calendar对象。firstweekday是一个整数,指定一周的第一天。0是星期一(默认值),6是星期日。
Calendar 实例有以下方法:
iterweekdays(): 返回将用于一周的工作日数字的迭代器。迭代器的第一个值与firstweekday属性的值相同。
itermonthdates(year, month): 此迭代器将返回datetime.date月份的所有日期(作为对象)以及月份开始前的所有日期或者在完成一周所需的月末之后的所有日期。
itermonthdays2(year, month): 类似 itermonthdates()。返回的天数将是由天数和星期数组成的元组。
itermonthdays(year, month): 类似 itermonthdates()。返回的天数将只是日期数字。
monthdatescalendar(year, month): 返回在该月的周列表一个月中的年作为全周。周是七个datetime.date对象的列表。
monthdays2calendar(year, month): 返回在该月的周列表一个月中的年作为全周。周是七个天数和工作日数的列表。
monthdayscalendar(year, month): 返回在该月的周列表一个月中的年作为全周。周是七天数的列表。
yeardatescalendar(year[, width] ): 返回指定年份的数据以备格式化。返回值是月份行的列表。每个月行包含最多宽度的 月份(默认为3)。每个月包含4至6周,每周包含1-7天。天是datetime.date对象。
yeardays2calendar(year[, width] ): 返回指定年份的数据以备格式化(类似于 yeardatescalendar())。周列表中的条目是日期数字和工作日数字的元组。本月以外的日数为零。
yeardayscalendar(year[, width]): 返回指定年份的数据以备格式化(类似于 yeardatescalendar())。周列表中的条目是日期编号。本月以外的日数为零。
2、TextCalendar 类
class calendar.TextCalendar([ firstweekday ] )
此类可用于生成纯文本日历。
TextCalendar 实例有以下方法:
formatmonth(theyear, themonth[, w[, l]]): 以多行字符串形式返回一个月的日历。(w,指定日期列的宽度,这些列是居中的。l,指定每周将使用的行数。)
prmonth(theyear, themonth[, w[, l]]): 打印一个月的日历。
formatyear(theyear[, w[, l[, c[, m]]]]): 将整个年份的日历作为多行字符串返回。可选参数w,l和c分别用于日期列宽,每周行数和月份列之间的空格数。
pryear(theyear[, w[, l[, c[, m]]]]): 打印整年的日历。
3、HTMLCalendar
class calendar.HTMLCalendar([ firstweekday ] )
此类可用于生成HTML日历。
HTMLCalendar 实例有以下方法:
formatmonth(theyear, themonth[, withyear]): 将一个月的日历作为HTML表格返回。如果withyear为true,则年份将包含在标题中,否则将仅使用月份名称。
formatyear(theyear[, width]): 将一年的日历作为HTML表格返回。width(默认为3)指定每行的月数。
formatyearpage(theyear [,width [,css [,encoding ] ] ] ): 将一年的日历作为完整的HTML页面返回。width(默认为3)指定每行的月数。css是要使用的级联样式表的名称。encoding指定用于输出的编码(默认为系统默认编码)。
4、LocaleTextCalendar 和 LocaleHTMLCalendar
class calendar.LocaleTextCalendar([ firstweekday [,locale ] ] )
TextCalendar 的子类,可以在构造函数中传递区域设置名称,并将在指定的区域设置中返回月份和工作日名称。如果此语言环境包含编码,则包含月份和工作日名称的所有字符串将作为unicode返回。
class calendar.LocaleHTMLCalendar([ firstweekday [,locale ] ] )
HTMLCalendar 的子类, 可以在构造函数中传递区域设置名称,并将在指定的区域设置中返回月份和工作日名称。如果此语言环境包含编码,则包含月份和工作日名称的所有字符串将作为unicode返回。
5、对于简单的文本日历,模块(calendar)提供以下功能。
(1)方法:
calendar.setfirstweekday(weekday): 将工作日(0星期一,6星期日)设置为每周开始。
【默认值:0->星期一】
MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY
# 例如,要将第一个工作日设置为星期日:
import calendar
calendar.setfirstweekday(calendar.SUNDAY)
# 也可写成:
calendar.setfirstweekday(6)
calendar.firstweekday(): 返回当前设置的每周开始的工作日。
calendar.isleap(year): 如果年份是闰年,则返回True,否则返回False。
calendar.leapdays(y1,y2 ): 返回y1到y2(不包括)范围内的闰年数,其中y1和y2是年。
calendar.weekday(year, month, day): 返回日期所对应的星期几(0星期一)。
import calendar
calendar.weekday(2018, 11, 24)
输出:5
calendar.weekheader(n ): 返回包含缩写的工作日名称的标头。n指定一个工作日的字符宽度。
calendar.monthrange(year, month): 返回指定年份和月份的月份第一天的工作日和月份的天数。
calendar.monthcalendar(year, month): 返回表示月份日历的矩阵。每行代表一周; 本月以外的由零代表。除非设定,否则每周从星期一开始
calendar.prmonth(theyear, themonth[, w[, l]]): 打印一个月的日历
calendar.month(theyear, themonth[, w[, l]]): 以多行字符串形式返回一个月的日历, TextCalendar类中的formatmonth()方法。
calendar.prcal(year[, w[, l[c]]]): 打印日历返回的整年 calendar()。
calendar.calendar(year[, w[, l[c]]]): 以多行字符串形式返回一年的日历, TextCalendar类中的formatyear()方法。
2、数据属性:
calendar.day_name: 一个数组,表示当前语言环境中的星期几。
calendar.day_abbr: 一个数组,表示当前语言环境中一周的缩写日期。
calendar.month_name: 一个数组,表示当前语言环境中一年中的月份。
calendar.month_abbr: 一个数组,表示当前语言环境中年份的缩写月份。