8.2. calendar — 通用日历相关函数 — Python 文档
8.2. 日历 — 通用日历相关功能
源代码: :source:`Lib/calendar.py`
该模块允许您像 Unix cal 程序一样输出日历,并提供与日历相关的其他有用功能。 默认情况下,这些日历将星期一作为一周的第一天,将星期日作为最后一天(欧洲惯例)。 使用 setfirstweekday() 将一周的第一天设置为星期日 (6) 或任何其他工作日。 指定日期的参数以整数形式给出。 有关相关功能,另请参阅 datetime 和 time 模块。
这些函数和类中的大多数都依赖于 datetime 模块,该模块使用了一个理想化的日历,当前的公历在两个方向上都无限扩展。 这与 Dershowitz 和 Reingold 的书“日历计算”中的“预测公历”的定义相匹配,它是所有计算的基准日历。
- class calendar.Calendar([firstweekday])
创建一个 Calendar 对象。 firstweekday 是一个整数,指定一周的第一天。
0
为星期一(默认),6
为星期日。Calendar 对象提供了几种可用于准备日历数据以进行格式化的方法。 这个类本身不做任何格式化。 这是子类的工作。
2.5 版中的新功能。
Calendar 实例有以下方法:
- iterweekdays()
返回将用于一周的工作日数字的迭代器。 迭代器的第一个值将与 firstweekday 属性的值相同。
- itermonthdates(year, month)
返回 年 年 月 (1-12) 月的迭代器。 此迭代器将返回该月的所有天数(作为 datetime.date 对象)以及该月开始之前或月底之后的所有天数,这些天数需要获得完整的一周。
- itermonthdays2(year, month)
返回 年 年 月 月的迭代器,类似于 itermonthdates()。 返回的天数将是由天数和工作日数组成的元组。
- itermonthdays(year, month)
返回 年 年 月 月的迭代器,类似于 itermonthdates()。 返回的天数只是天数。
- monthdatescalendar(year, month)
返回 年 月 月 中的周列表作为完整周。 周是七个 datetime.date 对象的列表。
- monthdays2calendar(year, month)
返回 年 月 月 中的周列表作为完整周。 周是由七组天数和工作日数组成的列表。
- monthdayscalendar(year, month)
返回 年 月 月 中的周列表作为完整周。 周是 7 天数字的列表。
- yeardatescalendar(year[, width])
返回准备格式化的指定年份的数据。 返回值是月份行列表。 每个月行最多包含 width 个月(默认为 3)。 每个月包含 4 到 6 周,每周包含 1-7 天。 天是 datetime.date 对象。
- yeardays2calendar(year[, width])
返回准备格式化的指定年份的数据(类似于 yeardatescalendar())。 周列表中的条目是天数和工作日数的元组。 本月以外的天数为零。
- yeardayscalendar(year[, width])
返回准备格式化的指定年份的数据(类似于 yeardatescalendar())。 周列表中的条目是天数。 本月以外的天数为零。
- class calendar.TextCalendar([firstweekday])
此类可用于生成纯文本日历。
2.5 版中的新功能。
TextCalendar 实例有以下方法:
- formatmonth(theyear, themonth[, w[, l]])
在多行字符串中返回一个月的日历。 如果提供 w,它指定日期列的宽度,这些列居中。 如果给出 l,则指定每周将使用的行数。 取决于构造函数中指定的或由 setfirstweekday() 方法设置的第一个工作日。
- prmonth(theyear, themonth[, w[, l]])
打印 formatmonth() 返回的月份日历。
- formatyear(theyear[, w[, l[, c[, m]]]])
将整年的 m 列日历作为多行字符串返回。 可选参数 w、l 和 c 分别用于日期列宽、每周行数和月列之间的空格数。 取决于构造函数中指定的或由 setfirstweekday() 方法设置的第一个工作日。 可以生成日历的最早年份取决于平台。
- pryear(theyear[, w[, l[, c[, m]]]])
打印 formatyear() 返回的一整年的日历。
- class calendar.HTMLCalendar([firstweekday])
此类可用于生成 HTML 日历。
2.5 版中的新功能。
HTMLCalendar 实例有以下方法:
- formatmonth(theyear, themonth[, withyear])
以 HTML 表格形式返回一个月的日历。 如果 withyear 为 true,则标题中将包含年份,否则将仅使用月份名称。
- formatyear(theyear[, width])
以 HTML 表格形式返回一年的日历。 width(默认为 3)指定每行的月数。
- formatyearpage(theyear[, width[, css[, encoding]]])
以完整的 HTML 页面形式返回一年的日历。 width(默认为 3)指定每行的月数。 css 是要使用的级联样式表的名称。 None 如果不使用样式表,则可以传递。 encoding 指定用于输出的编码(默认为系统默认编码)。
- class calendar.LocaleTextCalendar([firstweekday[, locale]])
TextCalendar 的这个子类可以在构造函数中传递一个语言环境名称,并将返回指定语言环境中的月份和工作日名称。 如果此语言环境包含编码,则所有包含月份和工作日名称的字符串都将作为 unicode 返回。
2.5 版中的新功能。
- class calendar.LocaleHTMLCalendar([firstweekday[, locale]])
HTMLCalendar 的这个子类可以在构造函数中传递一个语言环境名称,并将返回指定语言环境中的月份和工作日名称。 如果此语言环境包含编码,则所有包含月份和工作日名称的字符串都将作为 unicode 返回。
2.5 版中的新功能。
笔记
这两个类的 formatweekday()
和 formatmonthname()
方法暂时将当前语言环境更改为给定的 语言环境。 因为当前语言环境是进程范围的设置,所以它们不是线程安全的。
对于简单的文本日历,该模块提供以下功能。
- calendar.setfirstweekday(weekday)
设置每周开始的工作日(
0
是星期一,6
是星期日)。 值MONDAY
、TUESDAY
、WEDNESDAY
、THURSDAY
、FRIDAY
、SATURDAY
和SUNDAY
] 为方便起见。 例如,将第一个工作日设置为星期日:import calendar calendar.setfirstweekday(calendar.SUNDAY)
2.0 版中的新功能。
- calendar.firstweekday()
返回每周开始的工作日的当前设置。
2.0 版中的新功能。
- calendar.leapdays(y1, y2)
返回 y1 到 y2(不包括)范围内的闰年数,其中 y1 和 y2 是年份。
2.0 版更改: 此函数不适用于 Python 1.5.2 中跨越一个世纪的变化范围。
- calendar.weekday(year, month, day)
- 返回 年 (
1970
–…)、 月 (1
–) 的星期几(0
是星期一)12
)、天 (1
–31
)。
- calendar.weekheader(n)
- 返回包含缩写工作日名称的标题。 n 指定一个工作日的字符宽度。
- calendar.monthrange(year, month)
- 对于指定的 year 和 month,返回该月第一天的工作日和该月的天数。
- calendar.monthcalendar(year, month)
- 返回表示月份日历的矩阵。 每行代表一周; a 月以外的天数用零表示。 每周从星期一开始,除非由 setfirstweekday() 设置。
- calendar.prmonth(theyear, themonth[, w[, l]])
- 打印 month() 返回的月份日历。
- calendar.month(theyear, themonth[, w[, l]])
使用 TextCalendar 类的
formatmonth()
以多行字符串形式返回月份的日历。2.0 版中的新功能。
- calendar.prcal(year[, w[, l[c]]])
- 打印由 calendar() 返回的一整年的日历。
- calendar.calendar(year[, w[, l[c]]])
使用 TextCalendar 类的
formatyear()
将一整年的 3 列日历作为多行字符串返回。2.0 版中的新功能。
- calendar.timegm(tuple)
一个无关但方便的函数,它需要一个时间元组,例如由 time 模块中的 gmtime() 函数返回,并返回相应的 Unix 时间戳值,假设纪元为 1970,和 POSIX 编码。 事实上, time.gmtime() 和 timegm() 是彼此的倒数。
2.0 版中的新功能。
calendar 模块导出以下数据属性:
- calendar.day_name
- 一个数组,表示当前语言环境中的星期几。
- calendar.day_abbr
- 一个数组,表示当前语言环境中一周中的缩写天数。
- calendar.month_name
- 一个数组,表示当前语言环境中一年中的几个月。 这遵循一月的常规约定,月份编号为 1,因此它的长度为 13,而
month_name[0]
是空字符串。
- calendar.month_abbr
- 一个数组,表示当前语言环境中一年中的缩写月份。 这遵循一月的常规约定,月份编号为 1,因此它的长度为 13,而
month_abbr[0]
是空字符串。