Spec-Zone.ru › Python 3.12

calendar — Общие функции, связанные с календарём

Исходный код: Lib/calendar.py

Этот модуль позволяет выводить календари, как программа Unix cal, и предоставляет дополнительные полезные функции, связанные с календарём. По умолчанию, эти календари имеют понедельник в качестве первого дня недели, а воскресенье — в качестве последнего (европейская конвенция). Используйте setfirstweekday(), чтобы установить первый день недели на воскресенье (6) или на любой другой день недели. Параметры, которые задают даты, представлены целыми числами. Для связанной функциональности см. также модули datetime и time.

Функции и классы, определённые в этом модуле, используют идеализированный календарь, текущий григорианский календарь, расширенный неограниченно в обоих направлениях. Это соответствует определению «пролептического григорианского» календаря в книге Дершовица и Рейнгольда «Вычисления календаря», где это базовый календарь для всех вычислений. Год 0 и отрицательные годы интерпретируются в соответствии со стандартом ISO 8601. Год 0 — это 1 до н.э., год -1 — 2 до н.э. и так далее.

class calendar.Calendar(firstweekday=0)

Создаёт объект Calendar. firstweekday — целое число, определяющее первый день недели. MONDAY — 0 (по умолчанию), SUNDAY — 6.

Объект Calendar предоставляет несколько методов, которые можно использовать для подготовки данных календаря для форматирования. Этот класс сам не выполняет форматирование. Это работа подклассов.

Экземпляры Calendar имеют следующие методы:

iterweekdays()

Возвращает итератор для номеров дней недели, которые будут использоваться для одной недели. Первое значение из итератора будет таким же, как значение свойства firstweekday.

itermonthdates(year, month)

Возвращает итератор для месяца month (1–12) в году year. Этот итератор вернёт все дни (как объекты datetime.date) для месяца и все дни до начала месяца или после окончания месяца, которые необходимы для получения полной недели.

itermonthdays(year, month)

Возвращает итератор для месяца month в году year, аналогичный itermonthdates(), но не ограниченный диапазоном datetime.date. Возвращаемые дни будут просто числами дня месяца. Для дней за пределами указанного месяца номер дня — 0.

itermonthdays2(year, month)

Возвращает итератор для месяца month в году year, аналогичный itermonthdates(), но не ограниченный диапазоном datetime.date. Возвращаемые дни будут кортежами, состоящими из числа дня месяца и номера дня недели.

itermonthdays3(year, month)

Возвращает итератор для месяца month в году year, аналогичный itermonthdates(), но не ограниченный диапазоном datetime.date. Возвращаемые дни будут кортежами, состоящими из года, месяца и номера дня месяца.

Добавлен в версии 3.7.

itermonthdays4(year, month)

Возвращает итератор для месяца month в году year, аналогичный itermonthdates(), но не ограниченный диапазоном datetime.date. Возвращаемые дни будут кортежами, состоящими из года, месяца, числа дня месяца и номера дня недели.

Добавлен в версии 3.7.

monthdatescalendar(year, month)

Возвращает список недель в месяце month года year в виде полных недель. Недели — списки из семи объектов datetime.date.

monthdays2calendar(year, month)

Возвращает список недель в месяце month года year в виде полных недель. Недели — списки из семи кортежей, содержащих числа дня и номера дня недели.

monthdayscalendar(year, month)

Возвращает список недель в месяце month года year в виде полных недель. Недели — списки из семи чисел дня.

yeardatescalendar(year, width=3)

Возвращает данные для указанного года, готовые для форматирования. Результат — список строк месяцев. Каждая строка месяца содержит до width месяцев (по умолчанию 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)

Возвращает календарь на весь год в 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-таблицы. Если withyear имеет значение True, год будет включён в заголовок, иначе будет использовано только название месяца.

formatyear(theyear, width=3)

Возвращает календарь года в виде HTML-таблицы. width (по умолчанию 3) задаёт количество месяцев в строке.

formatyearpage(theyear, width=3, css='calendar.css', encoding=None)

Возвращает календарь года в виде полной HTML-страницы. width (по умолчанию 3) задаёт количество месяцев в строке. css — имя используемого каскадного таблицы стилей. None может быть передано, если таблица стилей не должна использоваться. encoding задаёт кодировку вывода (по умолчанию кодировка по умолчанию системы).

formatmonthname(theyear, themonth, withyear=True)

Возвращает имя месяца в виде строки HTML-таблицы. Если withyear имеет значение True, год будет включён в строку, иначе будет использовано только название месяца.

HTMLCalendar имеет следующие атрибуты, которые можно переопределить для настройки 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.

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 может принимать имя локали в конструкторе и возвращать названия месяцев и дней недели в заданной локали.

class calendar.LocaleHTMLCalendar(firstweekday=0, locale=None)

Этот подкласс HTMLCalendar может принимать имя локали в конструкторе и возвращать названия месяцев и дней недели в заданной локали.

Примечание

Конструктор, formatweekday() и formatmonthname() методы этих двух классов временно изменяют LC_TIME локаль на заданную locale. Поскольку текущая локали — это настройка для всего процесса, они не потокобезопасны.

Для простых текстовых календарей этот модуль предоставляет следующие функции.

calendar.setfirstweekday(weekday)

Устанавливает день недели (0 — понедельник, 6 — воскресенье) для начала каждой недели. Значения MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY и SUNDAY предоставляются для удобства. Например, для установки первого дня недели на воскресенье:

import calendar
calendar.setfirstweekday(calendar.SUNDAY)
calendar.firstweekday()

Возвращает текущее значение для дня недели, с которого начинается каждая неделя.

calendar.isleap(year)

Возвращает True, если year високосный год, иначе False.

calendar.leapdays(y1, y2)

Возвращает количество високосных лет в диапазоне от y1 до y2 (исключая), где y1 и y2 — годы.

Эта функция работает для диапазонов, охватывающих смену столетия.

calendar.weekday(year, month, day)

Возвращает день недели (0 — понедельник) для year (1970–…), month (1–12), day (1–31).

calendar.weekheader(n)

Возвращает заголовок, содержащий сокращённые названия дней недели. n задаёт ширину в символах для одного дня недели.

calendar.monthrange(year, month)

Возвращает день недели первого дня месяца и количество дней в месяце для указанных year и month.

calendar.monthcalendar(year, month)

Возвращает матрицу, представляющую календарь месяца. Каждая строка представляет неделю; дни, не попадающие в месяц, представлены нулями. Каждая неделя начинается с понедельника, если не установлено иначе с помощью setfirstweekday().

calendar.prmonth(theyear, themonth, w=0, l=0)

Выводит календарь месяца, возвращённый month().

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 года и кодировку POSIX. Фактически, time.gmtime() и timegm() являются взаимно обратными функциями.

Модуль calendar экспортирует следующие атрибуты данных:

calendar.day_name

Массив, представляющий дни недели в текущем языковом окружении.

calendar.day_abbr

Массив, представляющий сокращённые названия дней недели в текущем языковом окружении.

calendar.MONDAY
calendar.TUESDAY
calendar.WEDNESDAY
calendar.THURSDAY
calendar.FRIDAY
calendar.SATURDAY
calendar.SUNDAY

Псевдонимы для дней недели, где MONDAY соответствует 0, а SUNDAY соответствует 6.

Добавлен в версии 3.12.

class calendar.Day

Перечисление, определяющее дни недели как целочисленные константы. Элементы этого перечисления экспортируются в область видимости модуля как MONDAY до SUNDAY.

Добавлен в версии 3.12.

calendar.month_name

Массив, представляющий месяцы года в текущем языковом окружении. Следует общепринятой конвенции, где январь — это месяц номер 1, поэтому он имеет длину 13, а month_name[0] — это пустая строка.

calendar.month_abbr

Массив, представляющий сокращённые названия месяцев года в текущем языковом окружении. Следует общепринятой конвенции, где январь — это месяц номер 1, поэтому он имеет длину 13, а month_abbr[0] — это пустая строка.

calendar.JANUARY
calendar.FEBRUARY
calendar.MARCH
calendar.APRIL
calendar.MAY
calendar.JUNE
calendar.JULY
calendar.AUGUST
calendar.SEPTEMBER
calendar.OCTOBER
calendar.NOVEMBER
calendar.DECEMBER

Псевдонимы для месяцев года, где JANUARY соответствует 1, а DECEMBER соответствует 12.

Добавлен в версии 3.12.

class calendar.Month

Перечисление, определяющее месяцы года как целочисленные константы. Элементы этого перечисления экспортируются в область видимости модуля как JANUARY до DECEMBER.

Добавлен в версии 3.12.

Модуль calendar определяет следующие исключения:

exception calendar.IllegalMonthError(month)

Подкласс ValueError, генерируется, когда указанный номер месяца выходит за пределы диапазона 1-12 (включительно).

month

Некорректный номер месяца.

exception calendar.IllegalWeekdayError(weekday)

Подкласс ValueError, генерируется, когда указанный номер дня недели выходит за пределы диапазона 0-6 (включительно).

weekday

Некорректный номер дня недели.

См. также

Module datetime

Объектно-ориентированный интерфейс к датам и времени с функциональностью, аналогичной модулю time.

Module time

Функции низкого уровня, связанные с временем.

Использование в командной строке

Добавлен в версии 2.5.

Модуль calendar может быть запущен как скрипт из командной строки для интерактивного вывода календаря.

python -m calendar [-h] [-L LOCALE] [-e ENCODING] [-t {text,html}]
                   [-w WIDTH] [-l LINES] [-s SPACING] [-m MONTHS] [-c CSS]
                   [year] [month]

Например, для вывода календаря на 2000 год:

$ python -m calendar 2000
                                  2000

      January                   February                   March
Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su
                1  2          1  2  3  4  5  6             1  2  3  4  5
 3  4  5  6  7  8  9       7  8  9 10 11 12 13       6  7  8  9 10 11 12
10 11 12 13 14 15 16      14 15 16 17 18 19 20      13 14 15 16 17 18 19
17 18 19 20 21 22 23      21 22 23 24 25 26 27      20 21 22 23 24 25 26
24 25 26 27 28 29 30      28 29                     27 28 29 30 31
31

       April                      May                       June
Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su
                1  2       1  2  3  4  5  6  7                1  2  3  4
 3  4  5  6  7  8  9       8  9 10 11 12 13 14       5  6  7  8  9 10 11
10 11 12 13 14 15 16      15 16 17 18 19 20 21      12 13 14 15 16 17 18
17 18 19 20 21 22 23      22 23 24 25 26 27 28      19 20 21 22 23 24 25
24 25 26 27 28 29 30      29 30 31                  26 27 28 29 30

        July                     August                  September
Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su
                1  2          1  2  3  4  5  6                   1  2  3
 3  4  5  6  7  8  9       7  8  9 10 11 12 13       4  5  6  7  8  9 10
10 11 12 13 14 15 16      14 15 16 17 18 19 20      11 12 13 14 15 16 17
17 18 19 20 21 22 23      21 22 23 24 25 26 27      18 19 20 21 22 23 24
24 25 26 27 28 29 30      28 29 30 31               25 26 27 28 29 30
31

      October                   November                  December
Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su
                   1             1  2  3  4  5                   1  2  3
 2  3  4  5  6  7  8       6  7  8  9 10 11 12       4  5  6  7  8  9 10
 9 10 11 12 13 14 15      13 14 15 16 17 18 19      11 12 13 14 15 16 17
16 17 18 19 20 21 22      20 21 22 23 24 25 26      18 19 20 21 22 23 24
23 24 25 26 27 28 29      27 28 29 30               25 26 27 28 29 30 31
30 31

Принимаются следующие опции:

--help, -h

Показать сообщение справки и выйти.

--locale LOCALE, -L LOCALE

Языковое окружение для использования имён месяцев и дней недели. По умолчанию — английский.

--encoding ENCODING, -e ENCODING

Кодировка для вывода. --encoding требуется, если установлена опция --locale.

--type {text,html}, -t {text,html}

Вывести календарь в терминал в текстовом виде или в формате HTML-документа.

year

Год для вывода календаря. Должно быть число от 1 до 9999. По умолчанию — текущий год.

month

Месяц указанного года year для вывода календаря. Должно быть число от 1 до 12 и может использоваться только в текстовом режиме. По умолчанию выводится календарь на весь год.

Опции текстового режима:

--width WIDTH, -w WIDTH

Ширина столбца даты в терминале. Дата выводится по центру столбца. Значения меньше 2 игнорируются. По умолчанию — 2.

--lines LINES, -l LINES

Количество строк для каждой недели в строках терминала. Дата выводится в верхнем регистре. Значения меньше 1 игнорируются. По умолчанию — 1.

--spacing SPACING, -s SPACING

Пробел между месяцами в столбцах. Значения меньше 2 игнорируются. По умолчанию — 6.

--months MONTHS, -m MONTHS

Количество месяцев, выводимых в строке. По умолчанию — 3.

Опции режима HTML:

--css CSS, -c CSS

Путь к CSS-стилевому файлу для использования в календаре. Он должен быть относительным к генерируемому HTML или абсолютным HTTP- или file:/// URL.

© 2001–2024 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.12/library/calendar.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API