8.2. calendar—与 calendar 相关的常规Function

源代码: Lib/calendar.py


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

这些函数和类中的大多数都依赖于datetime模块,该模块使用理想化的 calendar,当前的格里高利历法在两个方向上都无限期地扩展。这与 Dershowitz 和 Reingold 的书“ Calendrical Calculations”中“ progresive Gregorian”calendar 的定义匹配,该 calendar 是所有计算的基础 calendar。

  • calendar. Calendar([第一个工作日])
    • 创建一个Calendar对象。 * firstweekday *是一个整数,指定一周中的第一天。 0是星期一(默认值),6是星期日。

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

2.5 版的新Function。

Calendar个实例具有以下方法:

  • iterweekdays ( )

    • 返回用于一周的星期几的迭代器。迭代器的第一个值将与firstweekday属性的值相同。
  • itermonthdates()

    • 返回年份* year 中月份 month *(1-12)的迭代器。该迭代器将返回该月的所有天(作为datetime.date个对象),以及返回整周所需的月初或月末之后的所有天。
  • itermonthdays2()

    • 返回类似于* itermonthdates()的年份* year 中月份 month *的迭代器。返回的天数将是一个由天数和周数组成的 Tuples。
  • itermonthdays()

    • 返回类似于* itermonthdates()的年份* year 中月份 month *的迭代器。返回的天数仅仅是天数。
  • monthdatescalendar()

    • 将* year 的月份 month *的星期列表作为完整的星期返回。周是七个datetime.date对象的列表。
  • monthdays2calendar()

    • 将* year 的月份 month *的星期列表作为完整的星期返回。星期是由日期和工作日数字组成的七个 Tuples 的列表。
  • monthdayscalendar()

    • 将* year 的月份 month *的星期列表作为完整的星期返回。周是 7 天数字的列表。
  • yeardatescalendar(* year * [,* width *])

    • 返回指定年份准备格式化的数据。返回值是月份行的列表。每个月行最多包含* width *月(默认为 3)。每个月包含 4 到 6 周,每个星期包含 1-7 天。天是datetime.date个对象。
  • yeardays2calendar(* year * [,* width *])

    • 返回指定年份准备格式化的数据(类似于yeardatescalendar())。周列表中的条目是天数和工作日数的 Tuples。这个月以外的天数为零。
  • yeardayscalendar(* year * [,* width *])

    • 返回指定年份准备格式化的数据(类似于yeardatescalendar())。周列表中的条目是天数。这个月以外的天数为零。
  • calendar. TextCalendar([第一个工作日])

    • 此类可用于生成纯文本 calendar。

2.5 版的新Function。

TextCalendar个实例具有以下方法:

  • formatmonth(* theyear themonth * [,* w * [,* l *]])

    • 以多行字符串返回一个月的 calendar。如果提供* w ,则它指定日期列的宽度(居中)。如果给出 l *,则它指定每周将使用的行数。取决于构造函数中指定的或由setfirstweekday()方法设置的第一个工作日。
  • prmonth(* theyear themonth * [,* w * [,* l *]])

  • formatyear(* theyear * [,* w * [,* l * [,* c * [,* m *]]]])

    • 以多行字符串的形式返回全年的* m 列 calendar。可选参数 w l c *分别用于日期列宽度,每周行数和月份列之间的间隔数。取决于构造函数中指定的或由setfirstweekday()方法设置的第一个工作日。可以生成 calendar 的最早年份取决于平台。
  • pryear(* theyear * [,* w * [,* l * [,* c * [,* m *]]]])

  • calendar. HTMLCalendar([第一个工作日])

    • 此类可用于生成 HTMLcalendar。

2.5 版的新Function。

HTMLCalendar个实例具有以下方法:

  • formatmonth((* theyear themonth * [,* withyear *])

    • 返回一个月的 calendar 作为 HTML 表。如果* withyear *为 true,则年份将包含在标题中,否则将仅使用月份名称。
  • formatyear(* theyear * [,* width *])

    • 将一年的 calendar 返回为 HTML 表格。 * width *(默认为 3)指定每行的月数。
  • formatyearpage(* theyear * [,* width * [,* css * [,* encoding *]]])

    • 返回一年的 calendar 作为完整的 HTML 页面。 * width *(默认为 3)指定每行的月数。 * css *是要使用的层叠样式表的名称。如果不使用样式表,则可以传递None。 * encoding *指定用于输出的编码(默认为系统默认编码)。
  • calendar. LocaleTextCalendar([第一工作日 [,语言环境]])

    • TextCalendar的子类可以在构造函数中传递一个语言环境名称,并将以指定的语言环境返回月份和工作日名称。如果此语言环境包括编码,则包含月份和工作日名称的所有字符串将作为 Unicode 返回。

2.5 版的新Function。

  • calendar. LocaleHTMLCalendar([第一工作日 [,语言环境]])
    • HTMLCalendar的子类可以在构造函数中传递一个语言环境名称,并将以指定的语言环境返回月份和工作日名称。如果此语言环境包括编码,则包含月份和工作日名称的所有字符串将作为 Unicode 返回。

2.5 版的新Function。

Note

这两个类的formatweekday()formatmonthname()方法将当前语言环境临时更改为给定的* locale *。因为当前语言环境是进程范围的设置,所以它们不是线程安全的。

对于简单的文本 calendar,此模块提供以下Function。

  • calendar. setfirstweekday(工作日)
    • 将工作日(0是星期一,6是星期日)设置为每周开始。为方便起见,提供了值MONDAYTUESDAYWEDNESDAYTHURSDAYFRIDAYSATURDAYSUNDAY。例如,将第一个工作日设置为星期日:
import calendar
calendar.setfirstweekday(calendar.SUNDAY)

2.0 版中的新Function。

  • calendar. firstweekday ( )
    • 返回每个星期开始的工作日的当前设置。

2.0 版中的新Function。

  • calendar. isleap()

    • 如果* year *是 a 年,则返回True,否则返回False
  • calendar. leapdays(* y1 y2 *)

    • 返回 of 年,从* y1 y2 (不包括),其中 y1 y2 *是年份。

在版本 2.0 中进行了更改:此Function不适用于 Python 1.5.2 中跨越一个世纪的变化的范围。

  • calendar. weekday()

    • 返回* year (1970 –…), month (112), day *(131)的星期几(0是星期一)。
  • calendar. weekheader(* n *)

    • 返回包含缩写的工作日名称的 Headers。 * n *指定一个工作日的宽度(以字符为单位)。
  • calendar. monthrange()

    • 返回指定的* year month *的月份的第一天的工作日以及月份中的天数。
  • calendar. monthcalendar()

    • 返回代表一个月的 calendar 的矩阵。每行代表一个星期;月份以外的天数,以零表示。除非由setfirstweekday()设置,否则每个星期都从星期一开始。
  • calendar. prmonth(* theyear themonth * [,* w * [,* l *]])

    • 打印month()返回的一个月的 calendar。
  • calendar. month(* theyear themonth * [,* w * [,* l *]])

    • 使用TextCalendar类的formatmonth()以多行字符串返回一个月的 calendar。

2.0 版中的新Function。

  • calendar. prcal(* year [,w [,l [c]]] *)

  • calendar. calendar(* year [,w [,l [c]]] *)

    • 使用TextCalendar类的formatyear()作为多行字符串返回整个一年的 3 列 calendar。

2.0 版中的新Function。

  • calendar. timegm(* tuple *)
    • 一个不相关但方便的函数,它使用一个时间 Tuples(例如time模块中的gmtime()函数返回的),并返回相应的 Unix 时间戳值(假定为 1970 年)和 POSIX 编码。实际上,time.gmtime()timegm()是彼此的逆。

2.0 版中的新Function。

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

  • calendar. day_name

    • 代表当前语言环境中星期几的数组。
  • calendar. day_abbr

    • 表示当前语言环境中星期几的缩写的数组。
  • calendar. month_name

    • 表示当前语言环境中一年中月份的数组。这遵循一月的常规惯例,即月份号 1,因此长度为 13,并且month_name[0]是空字符串。
  • calendar. month_abbr

    • 表示当前语言环境中一年中缩写月份的数组。这遵循一月的常规惯例,即月份号 1,因此长度为 13,并且month_abbr[0]是空字符串。

See also

  • Module datetime

  • 面向对象的日期和时间接口,其Function类似于time模块。

  • Module time

  • 与时间相关的底层Function。