8.2. calendar — 通用日历相关函数 — Python 文档

来自菜鸟教程
Python/docs/2.7/library/calendar
跳转至:导航、​搜索

8.2. 日历 — 通用日历相关功能

源代码: :source:`Lib/calendar.py`



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

这些函数和类中的大多数都依赖于 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 列日历作为多行字符串返回。 可选参数 wlc 分别用于日期列宽、每周行数和月列之间的空格数。 取决于构造函数中指定的或由 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 是星期日)。 值 MONDAYTUESDAYWEDNESDAYTHURSDAYFRIDAYSATURDAYSUNDAY ] 为方便起见。 例如,将第一个工作日设置为星期日:

import calendar
calendar.setfirstweekday(calendar.SUNDAY)

2.0 版中的新功能。

calendar.firstweekday()

返回每周开始的工作日的当前设置。

2.0 版中的新功能。

calendar.isleap(year)
如果 year 是闰年,则返回 True,否则返回 False
calendar.leapdays(y1, y2)

返回 y1y2(不包括)范围内的闰年数,其中 y1y2 是年份。

2.0 版更改: 此函数不适用于 Python 1.5.2 中跨越一个世纪的变化范围。

calendar.weekday(year, month, day)
返回 (1970–…)、 (1–) 的星期几(0 是星期一) 12)、 (131)。
calendar.weekheader(n)
返回包含缩写工作日名称的标题。 n 指定一个工作日的字符宽度。
calendar.monthrange(year, month)
对于指定的 yearmonth,返回该月第一天的工作日和该月的天数。
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] 是空字符串。

也可以看看

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