On this page
calendar—与 calendar 相关的常规Function
源代码: Lib/calendar.py
该模块允许您输出 Unix cal 程序之类的 calendar,并提供与 calendar 相关的其他有用Function。默认情况下,这些 calendar 将星期一作为一周的第一天,将星期日作为最后一天(欧洲惯例)。使用setfirstweekday()将一周的第一天设置为周日(6)或任何其他工作日。指定日期的参数以整数形式给出。有关相关Function,另请参见datetime和time模块。
此模块中定义的函数和类使用理想化的 calendar,当前的公历在两个方向上无限期扩展。这与 Dershowitz 和 Reingold 的书“ Calendrical Calculations”中“ progresive Gregorian”calendar 的定义匹配,该 calendar 是所有计算的基础 calendar。零年和负年按照 ISO 8601 标准的规定进行解释。 0 年是 1 BC,-1 年是 2 BC,依此类推。
-
- class *
calendar.
Calendar
(* firstweekday = 0 *)
- 创建一个Calendar对象。 * firstweekday *是一个整数,指定一周中的第一天。
0
是星期一(默认值),6
是星期日。
- class *
Calendar对象提供了几种可用于准备 calendar 数据以进行格式化的方法。此类本身不进行任何格式化。这是子类的工作。
Calendar个实例具有以下方法:
iterweekdays
( )- 返回用于一周的星期几的迭代器。迭代器的第一个值将与firstweekday属性的值相同。
itermonthdates
(年,月)- 返回年份* year 中月份 month *(1-12)的迭代器。该迭代器将返回该月的所有天(作为datetime.date个对象),以及返回整周所需的月初或月末之后的所有天。
itermonthdays
(年,月)- 返回类似于* itermonthdates()的年份* year 中的月份 month *的迭代器,但不受datetime.date范围的限制。返回的天数只是月份中的天数。对于指定月份以外的日子,天数为
0
。
- 返回类似于* itermonthdates()的年份* year 中的月份 month *的迭代器,但不受datetime.date范围的限制。返回的天数只是月份中的天数。对于指定月份以外的日子,天数为
itermonthdays2
(年,月)- 返回类似于* itermonthdates()的年份* year 中的月份 month *的迭代器,但不受datetime.date范围的限制。返回的天为 Tuples,由月中的一天号和工作日的数字组成。
itermonthdays3
(年,月)- 返回类似于* itermonthdates()的年份* year 中的月份 month *的迭代器,但不受datetime.date范围的限制。返回的天为 Tuples,该 Tuples 由一年,一个月和一个月中的一天的数字组成。
3.7 版中的新Function。
itermonthdays4
(年,月)- 返回类似于* itermonthdates()的年份* year 中的月份 month *的迭代器,但不受datetime.date范围的限制。返回的天为 Tuples,该 Tuples 由一年,一个月,一个月中的某天以及一周中的某天组成。
3.7 版中的新Function。
monthdatescalendar
(年,月)- 将* year 的月份 month *的星期列表作为完整的星期返回。周是七个datetime.date对象的列表。
monthdays2calendar
(年,月)- 将* year 的月份 month *的星期列表作为完整的星期返回。星期是由日期和工作日数字组成的七个 Tuples 的列表。
monthdayscalendar
(年,月)- 将* year 的月份 month *的星期列表作为完整的星期返回。周是 7 天数字的列表。
yeardatescalendar
(* year , width = 3 *)- 返回指定年份准备格式化的数据。返回值是月份行的列表。每个月行最多包含* width *月(默认为 3)。每个月包含 4 到 6 周,每个星期包含 1-7 天。天是datetime.date个对象。
yeardays2calendar
(* year , width = 3 *)- 返回指定年份准备格式化的数据(类似于yeardatescalendar())。周列表中的条目是天数和工作日数的 Tuples。这个月以外的天数为零。
yeardayscalendar
(* year , width = 3 *)- 返回指定年份准备格式化的数据(类似于yeardatescalendar())。周列表中的条目是天数。这个月以外的天数为零。
-
- class *
calendar.
TextCalendar
(* firstweekday = 0 *)
- 此类可用于生成纯文本 calendar。
- class *
TextCalendar个实例具有以下方法:
formatmonth
(* theyear , themonth , w = 0 , l = 0 *)- 以多行字符串返回一个月的 calendar。如果提供* w ,则它指定日期列的宽度(居中)。如果给出 l *,则它指定每周将使用的行数。取决于构造函数中指定的或由setfirstweekday()方法设置的第一个工作日。
prmonth
(* theyear , themonth , w = 0 , l = 0 *)- 打印formatmonth()返回的一个月的 calendar。
formatyear
(* theyear , w = 2 , l = 1 , c = 6 , m = 3 *)- 以多行字符串的形式返回全年的* m 列 calendar。可选参数 w , l 和 c *分别用于日期列宽度,每周行数和月份列之间的间隔数。取决于构造函数中指定的或由setfirstweekday()方法设置的第一个工作日。可以生成 calendar 的最早年份取决于平台。
pryear
(* theyear , w = 2 , l = 1 , c = 6 , m = 3 *)- 打印formatyear()返回的整年的 calendar。
-
- class *
calendar.
HTMLCalendar
(* firstweekday = 0 *)
- 此类可用于生成 HTMLcalendar。
- class *
HTMLCalendar
个实例具有以下方法:
formatmonth
(* theyear , themonth , withyear = True *)- 返回一个月的 calendar 作为 HTML 表。如果* withyear *为 true,则年份将包含在标题中,否则将仅使用月份名称。
formatyear
(* theyear , width = 3 *)- 将一年的 calendar 返回为 HTML 表格。 * width *(默认为 3)指定每行的月数。
formatyearpage
(* theyear , width = 3 , css ='calendar.css', encoding = None *)- 返回一年的 calendar 作为完整的 HTML 页面。 * width *(默认为 3)指定每行的月数。 * css *是要使用的层叠样式表的名称。如果不使用样式表,则可以传递None。 * encoding *指定用于输出的编码(默认为系统默认编码)。
HTMLCalendar
具有以下属性,您可以重写以下属性来自定义 calendar 使用的 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 版中的新Function。
cssclasses_weekday_head
- Headers 行中用于工作日名称的 CSS 类列表。默认值与cssclasses相同。
3.7 版中的新Function。
cssclass_month_head
- 本月的主要 CSS 类(由
formatmonthname()
使用)。默认值为"month"
。
- 本月的主要 CSS 类(由
3.7 版中的新Function。
cssclass_month
- 整个月表的 CSS 类(由formatmonth()使用)。默认值为
"month"
。
- 整个月表的 CSS 类(由formatmonth()使用)。默认值为
3.7 版中的新Function。
cssclass_year
- 全年表格的 CSS 类(由formatyear()使用)。默认值为
"year"
。
- 全年表格的 CSS 类(由formatyear()使用)。默认值为
3.7 版中的新Function。
cssclass_year_head
- 全年表头的 CSS 类(由formatyear()使用)。默认值为
"year"
。
- 全年表头的 CSS 类(由formatyear()使用)。默认值为
3.7 版中的新Function。
请注意,尽管上述类属性的命名是单数(例如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 *
-
- class *
calendar.
LocaleHTMLCalendar
(* firstweekday = 0 , locale = None *)
- HTMLCalendar的子类可以在构造函数中传递一个语言环境名称,并将以指定的语言环境返回月份和工作日名称。如果此语言环境包括编码,则包含月份和工作日名称的所有字符串将作为 Unicode 返回。
- class *
Note
这两个类的formatweekday()
和formatmonthname()
方法将当前语言环境临时更改为给定的* locale *。因为当前语言环境是进程范围的设置,所以它们不是线程安全的。
对于简单的文本 calendar,此模块提供以下Function。
calendar.
setfirstweekday
(工作日)- 将工作日(
0
是星期一,6
是星期日)设置为每周开始。为方便起见,提供了值MONDAY
,TUESDAY
,WEDNESDAY
,THURSDAY
,FRIDAY
,SATURDAY
和SUNDAY
。例如,将第一个工作日设置为星期日:
- 将工作日(
import calendar
calendar.setfirstweekday(calendar.SUNDAY)
calendar.
firstweekday
( )- 返回每个星期开始的工作日的当前设置。
calendar.
isleap
(年)calendar.
leapdays
(* y1 , y2 *)- 返回 of 年,从* y1 到 y2 (不包括),其中 y1 和 y2 *是年份。
此Function适用于跨世纪变化的范围。
calendar.
weekday
(年,月,日)- 返回* year (
1970
–…), month (1
–12
), day *(1
–31
)的星期几(0
是星期一)。
- 返回* year (
calendar.
weekheader
(* n *)- 返回包含缩写的工作日名称的 Headers。 * n *指定一个工作日的宽度(以字符为单位)。
calendar.
monthrange
(年,月)- 返回指定的* year 和 month *的月份的第一天的工作日以及月份中的天数。
calendar.
monthcalendar
(年,月)- 返回代表一个月的 calendar 的矩阵。每行代表一个星期;月份以外的日子用零表示。除非由setfirstweekday()设置,否则每个星期从星期一开始。
calendar.
prmonth
(* theyear , themonth , w = 0 , l = 0 *)- 打印month()返回的一个月的 calendar。
calendar.
month
(* theyear , themonth , w = 0 , l = 0 *)- 使用TextCalendar类的
formatmonth()
以多行字符串返回一个月的 calendar。
- 使用TextCalendar类的
calendar.
prcal
(* year , w = 0 , l = 0 , c = 6 , m = 3 *)- 打印calendar()返回的整年的 calendar。
calendar.
calendar
(* year , w = 2 , l = 1 , c = 6 , m = 3 *)- 使用TextCalendar类的
formatyear()
作为多行字符串返回整个一年的 3 列 calendar。
- 使用TextCalendar类的
calendar.
timegm
(* tuple *)- 一个不相关但方便的函数,它使用一个时间 Tuples(例如time模块中的gmtime()函数返回的),并返回相应的 Unix 时间戳值(假定为 1970 年)和 POSIX 编码。实际上,time.gmtime()和timegm()是彼此的逆。
calendar模块导出以下数据属性:
calendar.
day_name
- 代表当前语言环境中星期几的数组。
calendar.
day_abbr
- 表示当前语言环境中星期几的缩写的数组。
calendar.
month_name
- 表示当前语言环境中一年中月份的数组。这遵循一月的常规惯例,即月份号 1,因此长度为 13,并且
month_name[0]
是空字符串。
- 表示当前语言环境中一年中月份的数组。这遵循一月的常规惯例,即月份号 1,因此长度为 13,并且
calendar.
month_abbr
- 表示当前语言环境中一年中缩写月份的数组。这遵循一月的常规惯例,即月份号 1,因此长度为 13,并且
month_abbr[0]
是空字符串。
- 表示当前语言环境中一年中缩写月份的数组。这遵循一月的常规惯例,即月份号 1,因此长度为 13,并且