You are here:  Home » Python » calendar-与日历相关的一般功能详解(26)Python语言(必读进阶学习教程)(参考资料)

此模块允许您输出类似Unix cal程序的日历,并提供与日历相关的其他有用功能。默认情况下,这些日历将星期一作为一周的第一天,将星期日作为最后一天(欧洲大会)。用于setfirstweekday()将一周的第一天设置为星期日(6)或任何其他工作日。指定日期的参数以整数形式给出。有关相关功能,另请参阅datetimetime模块。

本模块中定义的函数和类使用理想化的日历,当前的公历在两个方向上无限延伸。这与Dershowitz和Reingold的书“Calendrical Calculations”中的“proleptic Gregorian”日历的定义相符,它是所有计算的基本日历。零和负年份按ISO 8601标准规定解释。0年是公元前1年,公元1年是公元前2年,依此类推。

class calendar.Calendarfirstweekday = 0 
创建一个Calendar对象。firstweekday是一个整数,指定一周的第一天。0是星期一(默认值),6是星期日。

Calendar对象提供了可用于制备日历数据进行格式化的几种方法。此类本身不进行任何格式化。这是子类的工作。

Calendar 实例有以下方法:

iterweekdays
返回将用于一周的工作日数字的迭代器。迭代器的第一个值与firstweekday属性的值相同。
itermonthdates
返回一个迭代月在今年(1-12)。此迭代器将返回datetime.date月份的所有日期(作为对象)以及月份开始前的所有日期或者在完成一周所需的月末之后的所有日期。
itermonthdays
返回一个迭代月在今年类似 itermonthdates(),但不限制datetime.date 范围。返回的天数将只是月份数字的日期。对于指定月份之外的日期,日期编号为0
itermonthdays2
返回一个迭代月在今年类似 itermonthdates(),但不限制datetime.date 范围。返回的天数将是由一个月中的一天和一个星期数组成的元组。
itermonthdays3
返回一个迭代月在今年类似 itermonthdates(),但不限制datetime.date 范围。返回的天数将是由一年,一个月和一个月中的数字组成的元组。

版本3.7中的新功能。

itermonthdays4
返回一个迭代月在今年类似 itermonthdates(),但不限制datetime.date 范围。返回的天数将是由一年,一个月,一个月中的某天和一周中的一天组成的元组。

版本3.7中的新功能。

monthdatescalendar
返回在该月的周列表一个月中的作为全周。周是七个datetime.date对象的列表。
monthdays2calendar
返回在该月的周列表一个月中的作为全周。周是七个元组的日数和工作日数的列表。
monthdayscalendar
返回在该月的周列表一个月中的作为全周。周是七天数的列表。
yeardatescalendar宽= 3 
返回指定年份的数据以备格式化。返回值是月份行的列表。每个月行包含最多宽度的 月份(默认为3)。每个月包含4到6周,每周包含1-7天。天是datetime.date对象。
yeardays2calendar宽= 3 
返回指定年份的数据以备格式化(类似于 yeardatescalendar())。周列表中的条目是日期数字和工作日数字的元组。本月以外的日数为零。
yeardayscalendar宽= 3 
返回指定年份的数据以备格式化(类似于 yeardatescalendar())。周列表中的条目是日期编号。本月以外的日数为零。
class calendar.TextCalendarfirstweekday = 0 
此类可用于生成纯文本日历。

TextCalendar 实例有以下方法:

formatmonth的某些地方themonthW = 0L = 0 
以多行字符串形式返回一个月的日历。如果提供了w,则它指定日期列的宽度,这些列是居中的。如果给出l,则它指定每周将使用的行数。取决于构造函数中指定的第一个工作日或由setfirstweekday()方法设置 。
prmonth的某些地方themonthW = 0L = 0 
打印返回的月份日历formatmonth()
formatyear的某些地方W = 2L = 1C = 6M = 3 
将整个年份的m- column日历作为多行字符串返回。可选参数wlc分别用于日期列宽,每周行数和月份列之间的空格数。取决于构造函数中指定的第一个工作日或由setfirstweekday()方法设置 。可以生成日历的最早年份取决于平台。
pryear的某些地方W = 2L = 1C = 6M = 3 
打印日历返回的整年formatyear()
class calendar.HTMLCalendarfirstweekday = 0 
此类可用于生成HTML日历。

HTMLCalendar 实例有以下方法:

formatmonth的某些地方themonthwithyear =真
将一个月的日历作为HTML表格返回。如果withyear为true,则年份将包含在标题中,否则将仅使用月份名称。
formatyear的某些地方宽度= 3 
将一年的日历作为HTML表格返回。width(默认为3)指定每行的月数。
formatyearpage的某些地方宽度= 3CSS = ‘calendar.css’ 编码=无
将一年的日历作为完整的HTML页面返回。width(默认为3)指定每行的月数。css是要使用的级联样式表的名称。None如果不应使用样式表,则可以传递。encoding指定用于输出的编码(默认为系统默认编码)。

HTMLCalendar 具有以下属性,您可以覆盖这些属性以自定义日历使用的CSS类:

cssclasses
每个工作日使用的CSS类列表。默认的类列表是:

cssclasses = ["mon", "tue", "wed", "thu", "fri", "sat", "sun"]

 

每天可以添加更多样式:

cssclasses = ["mon text-bold", "tue", "wed", "thu", "fri", "sat", "sun red"]

 

请注意,此列表的长度必须为七个项目。

cssclass_noday
工作日的CSS类在上个月或下个月发生。

版本3.7中的新功能。

cssclasses_weekday_head
用于标题行中工作日名称的CSS类列表。默认值与cssclasses。相同。

版本3.7中的新功能。

cssclass_month_head
月份的头部CSS类(由…使用formatmonthname())。默认值为"month"

版本3.7中的新功能。

cssclass_month
整个月表的CSS类(由…使用formatmonth())。默认值为"month"

版本3.7中的新功能。

cssclass_year
全年表格的CSS类(由…使用 formatyear())。默认值为"year"

版本3.7中的新功能。

cssclass_year_head
全年表头的CSS类(由…使用 formatyear())。默认值为"year"

版本3.7中的新功能。

请注意,尽管上述类属性的命名是单数(例如cssclass_month cssclass_noday),但可以用空格分隔的CSS类列表替换单个CSS类,例如:

"text-bold text-red"

以下是如何HTMLCalendar自定义的示例:

class CustomHTMLCal(calendar.HTMLCalendar):
    cssclasses = [style + " text-nowrap" for style in
                  calendar.HTMLCalendar.cssclasses]
    cssclass_month_head = "text-center month-head"
    cssclass_month = "text-center month"
    cssclass_year = "text-italic lead"

 

class calendar.LocaleTextCalendarfirstweekday = 0locale = None 
此子类TextCalendar可以在构造函数中传递区域设置名称,并将在指定的区域设置中返回月份和工作日名称。如果此语言环境包含编码,则包含月份和工作日名称的所有字符串将作为unicode返回。
class calendar.LocaleHTMLCalendarfirstweekday = 0locale = None 
此子类HTMLCalendar可以在构造函数中传递区域设置名称,并将在指定的区域设置中返回月份和工作日名称。如果此语言环境包含编码,则包含月份和工作日名称的所有字符串将作为unicode返回。

注意

formatweekday()formatmonthname()这两个类的方法当前区域临时改变为给定的语言环境。由于当前区域设置是进程范围的设置,因此它们不是线程安全的。

对于简单的文本日历,此模块提供以下功能。

calendar.setfirstweekday工作日
将工作日(0星期一,6星期日)设置为每周开始。值MONDAYTUESDAYWEDNESDAYTHURSDAY, FRIDAYSATURDAY,和SUNDAY被提供了方便。例如,要将第一个工作日设置为星期日:

import calendar
calendar.setfirstweekday(calendar.SUNDAY)
calendar.firstweekday
返回每周开始的工作日的当前设置。
calendar.isleap
True如果年份是闰年,则返回,否则返回False
calendar.leapdaysy1y2 
返回y1y2(不包括)范围内的闰年数,其中y1y2是年。

此功能适用于跨越一个世纪变化的范围。

calendar.weekday
返回(- …), (- ),(- )的星期几(0星期一)。1970112131
calendar.weekheader
返回包含缩写的工作日名称的标题。n指定一个工作日的字符宽度。
calendar.monthrange
返回指定年份月份的月份第一天的工作日和月份的天数。
calendar.monthcalendar
返回表示月份日历的矩阵。每行代表一周; 本月以外的零日由零代表。除非设定,否则每周从星期一开始setfirstweekday()
calendar.prmonth的某些地方themonthW = 0L = 0 
打印一个月的日历month()
calendar.month的某些地方themonthW = 0L = 0 
返回使用多线串一个月的日历formatmonth() 中的TextCalendar类。
calendar.prcalw = 0l = 0c = 6m = 3 
打印日历返回的整年 calendar()
calendar.calendarw = 2l = 1c = 6m = 3 
返回一整年的3列日历中使用一个多行字符串formatyear()中的TextCalendar类。
calendar.timegm元组
一个不相关但很方便的函数,它接受一个时间元组,如模块中的gmtime()函数time返回,并返回相应的Unix时间戳值,假定1970年的纪元,以及POSIX编码。其实,time.gmtime()并且timegm()是彼此的倒数。

calendar模块导出以下数据属性:

calendar.day_name
一个数组,表示当前语言环境中的星期几。
calendar.day_abbr
一个数组,表示当前语言环境中一周的缩写天数。
calendar.month_name
一个数组,表示当前语言环境中一年中的月份。这遵循1月的正常约定为月号1,因此它的长度为13并且month_name[0]是空字符串。
calendar.month_abbr
一个数组,表示当前语言环境中年份的缩写月份。这遵循1月的正常约定为月号1,因此它的长度为13并且month_abbr[0]是空字符串。

也可以看看

模 datetime
面向对象的日期和时间接口,具有与time模块类似的功能 。
模 time
低级时间相关功能。