calendar-与日历相关的一般功能详解(26)Python语言(必读进阶学习教程)(参考资料)
此模块允许您输出类似Unix cal程序的日历,并提供与日历相关的其他有用功能。默认情况下,这些日历将星期一作为一周的第一天,将星期日作为最后一天(欧洲大会)。用于setfirstweekday()
将一周的第一天设置为星期日(6)或任何其他工作日。指定日期的参数以整数形式给出。有关相关功能,另请参阅datetime
和time
模块。
本模块中定义的函数和类使用理想化的日历,当前的公历在两个方向上无限延伸。这与Dershowitz和Reingold的书“Calendrical Calculations”中的“proleptic Gregorian”日历的定义相符,它是所有计算的基本日历。零和负年份按ISO 8601标准规定解释。0年是公元前1年,公元1年是公元前2年,依此类推。
- class
calendar.
Calendar
(firstweekday = 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.
TextCalendar
(firstweekday = 0 ) - 此类可用于生成纯文本日历。
TextCalendar
实例有以下方法:formatmonth
(的某些地方,themonth,W = 0,L = 0 )- 以多行字符串形式返回一个月的日历。如果提供了w,则它指定日期列的宽度,这些列是居中的。如果给出l,则它指定每周将使用的行数。取决于构造函数中指定的第一个工作日或由
setfirstweekday()
方法设置 。
prmonth
(的某些地方,themonth,W = 0,L = 0 )- 打印返回的月份日历
formatmonth()
。
formatyear
(的某些地方,W = 2,L = 1,C = 6,M = 3 )- 将整个年份的m- column日历作为多行字符串返回。可选参数w,l和c分别用于日期列宽,每周行数和月份列之间的空格数。取决于构造函数中指定的第一个工作日或由
setfirstweekday()
方法设置 。可以生成日历的最早年份取决于平台。
pryear
(的某些地方,W = 2,L = 1,C = 6,M = 3 )- 打印日历返回的整年
formatyear()
。
- class
calendar.
HTMLCalendar
(firstweekday = 0 ) - 此类可用于生成HTML日历。
HTMLCalendar
实例有以下方法:formatmonth
(的某些地方,themonth,withyear =真)- 将一个月的日历作为HTML表格返回。如果withyear为true,则年份将包含在标题中,否则将仅使用月份名称。
formatyear
(的某些地方,宽度= 3 )- 将一年的日历作为HTML表格返回。width(默认为3)指定每行的月数。
formatyearpage
(的某些地方,宽度= 3,CSS = ‘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.
LocaleTextCalendar
(firstweekday = 0,locale = None ) - 此子类
TextCalendar
可以在构造函数中传递区域设置名称,并将在指定的区域设置中返回月份和工作日名称。如果此语言环境包含编码,则包含月份和工作日名称的所有字符串将作为unicode返回。
- class
calendar.
LocaleHTMLCalendar
(firstweekday = 0,locale = None ) - 此子类
HTMLCalendar
可以在构造函数中传递区域设置名称,并将在指定的区域设置中返回月份和工作日名称。如果此语言环境包含编码,则包含月份和工作日名称的所有字符串将作为unicode返回。
注意
在formatweekday()
和formatmonthname()
这两个类的方法当前区域临时改变为给定的语言环境。由于当前区域设置是进程范围的设置,因此它们不是线程安全的。
对于简单的文本日历,此模块提供以下功能。
calendar.
setfirstweekday
(工作日)- 将工作日(
0
星期一,6
星期日)设置为每周开始。值MONDAY
,TUESDAY
,WEDNESDAY
,THURSDAY
,FRIDAY
,SATURDAY
,和SUNDAY
被提供了方便。例如,要将第一个工作日设置为星期日:import calendar calendar.setfirstweekday(calendar.SUNDAY)
calendar.
firstweekday
()- 返回每周开始的工作日的当前设置。
calendar.
isleap
(年)True
如果年份是闰年,则返回,否则返回False
。
calendar.
leapdays
(y1,y2 )- 返回y1到y2(不包括)范围内的闰年数,其中y1和y2是年。
此功能适用于跨越一个世纪变化的范围。
calendar.
weekday
(年,月,日)- 返回年(- …), 月(- ),日(- )的星期几(
0
星期一)。1970
1
12
1
31
calendar.
weekheader
(n )- 返回包含缩写的工作日名称的标题。n指定一个工作日的字符宽度。
calendar.
monthrange
(年,月)- 返回指定年份和月份的月份第一天的工作日和月份的天数。
calendar.
monthcalendar
(年,月)- 返回表示月份日历的矩阵。每行代表一周; 本月以外的零日由零代表。除非设定,否则每周从星期一开始
setfirstweekday()
。
calendar.
prmonth
(的某些地方,themonth,W = 0,L = 0 )- 打印一个月的日历
month()
。
calendar.
month
(的某些地方,themonth,W = 0,L = 0 )- 返回使用多线串一个月的日历
formatmonth()
中的TextCalendar
类。
calendar.
prcal
(年,w = 0,l = 0,c = 6,m = 3 )- 打印日历返回的整年
calendar()
。
calendar.
calendar
(年,w = 2,l = 1,c = 6,m = 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
- 低级时间相关功能。