calendar
---一般日历相关功能¶
源代码: Lib/calendar.py
此模块允许您输出类似于Unix的日历 cal 程序,并提供与日历相关的其他有用功能。默认情况下,这些日历以星期一为一周的第一天,星期日为最后一天(欧洲公约)。使用 setfirstweekday()
将一周的第一天设置为星期日(6)或任何其他工作日。指定日期的参数以整数形式给出。有关相关功能,请参见 datetime
和 time
模块。
本模块中定义的函数和类使用理想化的日历,当前的公历在两个方向上无限延伸。这与Dershowitz中的“无神论公历”和Reingold的书“日历计算”的定义相匹配,在书中,它是所有计算的基准日历。零年和负年按照ISO 8601标准进行解释。0年是公元前1年,1年是公元前2年,以此类推。
- class calendar.Calendar(firstweekday=0)¶
创建一个
Calendar
对象。 第一周日 是一个整数,指定一周的第一天。0
是星期一(默认值),6
星期日。A
Calendar
对象提供了几种方法,可用于准备要格式化的日历数据。此类本身不执行任何格式设置。这是子类的工作。Calendar
实例具有以下方法:- iterweekdays()¶
返回将用于一周的周-日数字的迭代器。迭代器的第一个值将与
firstweekday
属性。
- itermonthdates(year, month)¶
返回当月的迭代器 月 (1-12)年内 year . 此迭代器将返回所有日期(如
datetime.date
对象)在月开始之前或月结束之后的所有天内,这是获得完整周所必需的。
- itermonthdays(year, month)¶
返回当月的迭代器 月 年内 year 类似
itermonthdates()
,但不受datetime.date
范围。返回的天数将只是月份中的第几天。对于指定月份之外的日期,日期是0
.
- itermonthdays2(year, month)¶
返回当月的迭代器 月 年内 year 类似
itermonthdates()
,但不受datetime.date
范围。返回的天数将是由一个月的第几天和一个星期的第几天组成的元组。
- itermonthdays3(year, month)¶
返回当月的迭代器 月 年内 year 类似
itermonthdates()
,但不受datetime.date
范围。返回的天数将是由一年、一个月和一个月的数字组成的元组。3.7 新版功能.
- itermonthdays4(year, month)¶
返回当月的迭代器 月 年内 year 类似
itermonthdates()
,但不受datetime.date
范围。返回的天数将是由一年、一个月、一个月中的一天和一周中的一天数字组成的元组。3.7 新版功能.
- monthdatescalendar(year, month)¶
返回月份中的周列表 月 的 year 整整一周。星期是七个星期的清单
datetime.date
物体。
- monthdays2calendar(year, month)¶
返回月份中的周列表 月 的 year 整整一周。周是由7个元组组成的日数和工作日数的列表。
- monthdayscalendar(year, month)¶
返回月份中的周列表 月 的 year 整整一周。周是7天的数字列表。
- yeardatescalendar(year, width=3)¶
返回指定年份的数据,以备格式化。返回值是月份行的列表。每个月行最多包含 宽度 月(默认为3)。每月包含4到6周,每周包含1到7天。天是
datetime.date
物体。
- yeardays2calendar(year, width=3)¶
返回准备格式化的指定年份的数据(类似于
yeardatescalendar()
)周列表中的条目是日数和周数的元组。本月以外的天数为零。
- yeardayscalendar(year, width=3)¶
返回准备格式化的指定年份的数据(类似于
yeardatescalendar()
)周列表中的条目是日数。本月以外的天数为零。
- class calendar.TextCalendar(firstweekday=0)¶
此类可用于生成纯文本日历。
TextCalendar
实例具有以下方法:- formatmonth(theyear, themonth, w=0, l=0)¶
以多行字符串返回一个月的日历。如果 w 它指定日期列的宽度(居中)。如果 l 它指定每周使用的行数。取决于构造函数中指定的或由
setfirstweekday()
方法。
- prmonth(theyear, themonth, w=0, l=0)¶
打印由返回的月份日历
formatmonth()
.
- formatyear(theyear, w=2, l=1, c=6, m=3)¶
返回A m -将一整年的日历列为多行字符串。可选参数 w , l 和 c 分别表示日期列宽度、每周行数和月份列之间的空格数。取决于构造函数中指定的或由
setfirstweekday()
方法。可以生成日历的最早年份取决于平台。
- pryear(theyear, w=2, l=1, c=6, m=3)¶
打印由返回的全年日历
formatyear()
.
- class calendar.HTMLCalendar(firstweekday=0)¶
此类可用于生成HTML日历。
HTMLCalendar
实例具有以下方法:- formatmonth(theyear, themonth, withyear=True)¶
以HTML表形式返回一个月的日历。如果 按年 如果为真,则年份将包含在标题中,否则只使用月份名称。
- formatyear(theyear, width=3)¶
以HTML表形式返回一年的日历。 宽度 (默认为3)指定每行的月数。
- formatyearpage(theyear, width=3, css='calendar.css', encoding=None)¶
将一年的日历作为完整的HTML页返回。 宽度 (默认为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"]
请注意,此列表的长度必须为7项。
- 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()
这两个类的方法暂时将当前区域设置更改为给定的 locale . 因为当前区域设置是进程范围的设置,所以它们不是线程安全的。
对于简单文本日历,此模块提供以下功能。
- calendar.setfirstweekday(weekday)¶
设置工作日 (
0
是星期一,6
每周开始。价值观MONDAY
,TUESDAY
,WEDNESDAY
,THURSDAY
,FRIDAY
,SATURDAY
和SUNDAY
提供方便。例如,要将第一个工作日设置为星期日,请执行以下操作:import calendar calendar.setfirstweekday(calendar.SUNDAY)
- calendar.firstweekday()¶
返回每周开始的工作日的当前设置。
- calendar.leapdays(y1, y2)¶
返回范围为的闰年数 y1 到 y2 (不含),其中 y1 和 y2 是岁月。
此函数适用于跨越一个世纪变化的范围。
- calendar.weekday(year, month, day)¶
返回星期几 (
0
是星期一) year (1970
…… 月 (1
-‘12’) day (1
-‘31’)。
- calendar.weekheader(n)¶
返回包含缩写工作日名称的标题。 n 以字符为单位指定一个工作日的宽度。
- calendar.monthrange(year, month)¶
为指定的 year 和 月 .
- calendar.monthcalendar(year, month)¶
返回表示月份日历的矩阵。每行表示一周;月外的天数用零表示。每周从星期一开始,除非
setfirstweekday()
.
- calendar.month(theyear, themonth, w=0, l=0)¶
用多行字符串返回月份的日历
formatmonth()
的TextCalendar
类。
- calendar.prcal(year, w=0, l=0, c=6, m=3)¶
打印由返回的一整年的日历
calendar()
.
- calendar.calendar(year, w=2, l=1, c=6, m=3)¶
以多行字符串的形式返回一整年的三列日历,使用
formatyear()
的TextCalendar
类。
- calendar.timegm(tuple)¶
一个不相关但很方便的函数,它需要一个时间元组,例如
gmtime()
功能在time
模块,并返回相应的unix时间戳值(假定1970年为epoch)和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]
是空字符串。