calendar.md
1> **Источник:** https://python-all.ru/3.16/library/calendar.html2>3> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.45---67# `calendar` – Общие функции работы с календарём89**Исходный код:** [Lib/calendar.py](https://python-all.ru/src/main/Lib/calendar.py)1011---1213Этот модуль позволяет выводить календари, как программа Unix **cal**, и предоставляет дополнительные полезные функции, связанные с календарём. По умолчанию в этих календарях первый день недели – понедельник, а последний – воскресенье (европейская конвенция). Используйте [`setfirstweekday()`](https://python-all.ru/3.16/library/calendar.html#calendar.setfirstweekday), чтобы установить первый день недели на воскресенье (6) или любой другой день недели. Параметры, задающие даты, передаются в виде целых чисел. За дополнительными возможностями обращайтесь также к модулям [`datetime`](https://python-all.ru/3.16/library/datetime.html#module-datetime) и [`time`](https://python-all.ru/3.16/library/time.html#module-time).1415Функции и классы, определённые в этом модуле, используют идеализированный календарь – текущий григорианский календарь, неограниченно расширенный в обоих направлениях. Это соответствует определению «пролептического григорианского» календаря из книги Дершовица и Рейнгольда «Calendrical Calculations», где он является базовым для всех вычислений. Нулевые и отрицательные годы интерпретируются в соответствии со стандартом ISO 8601. Год 0 соответствует 1 году до н.э., год -1 – 2 году до н.э. и так далее.1617#### `class calendar.Calendar(firstweekday=0)`1819Создаёт объект `Calendar`. *firstweekday* – целое число, задающее первый день недели. [`MONDAY`](https://python-all.ru/3.16/library/calendar.html#calendar.MONDAY) равно `0` (по умолчанию), [`SUNDAY`](https://python-all.ru/3.16/library/calendar.html#calendar.SUNDAY) – `6`.2021Объект `Calendar` предоставляет несколько методов, которые можно использовать для подготовки данных календаря к форматированию. Этот класс сам не выполняет форматирование – это задача подклассов.2223Экземпляры `Calendar` имеют следующие методы и атрибуты:2425#### `firstweekday`2627Первый день недели в виде целого числа (0–6).2829Это свойство также можно установить и прочитать с помощью [`setfirstweekday()`](https://python-all.ru/3.16/library/calendar.html#calendar.Calendar.setfirstweekday) и [`getfirstweekday()`](https://python-all.ru/3.16/library/calendar.html#calendar.Calendar.getfirstweekday) соответственно.3031#### `getfirstweekday()`3233Возвращает [`int`](https://python-all.ru/3.16/library/functions.html#int) для текущего первого дня недели (0–6).3435Идентично чтению свойства [`firstweekday`](https://python-all.ru/3.16/library/calendar.html#calendar.Calendar.firstweekday).3637#### `setfirstweekday(firstweekday)`3839Устанавливает первый день недели равным *firstweekday*, переданному в виде [`int`](https://python-all.ru/3.16/library/functions.html#int) (0–6).4041Идентично установке свойства [`firstweekday`](https://python-all.ru/3.16/library/calendar.html#calendar.Calendar.firstweekday).4243#### `iterweekdays()`4445Возвращает итератор по номерам дней недели, которые будут использоваться для одной недели. Первое значение из итератора будет таким же, как значение свойства [`firstweekday`](https://python-all.ru/3.16/library/calendar.html#calendar.Calendar.firstweekday).4647#### `itermonthdates(year, month)`4849Возвращает итератор для месяца *month* (1–12) года *year*. Этот итератор вернёт все дни (в виде объектов [`datetime.date`](https://python-all.ru/3.16/library/datetime.html#datetime.date)) за месяц, а также все дни до начала месяца или после его окончания, необходимые для получения полной недели.5051#### `itermonthdays(year, month)`5253Возвращает итератор для месяца *month* года *year*, аналогично [`itermonthdates()`](https://python-all.ru/3.16/library/calendar.html#calendar.Calendar.itermonthdates), но без ограничения по диапазону [`datetime.date`](https://python-all.ru/3.16/library/datetime.html#datetime.date). Возвращаемые дни – просто номера дней месяца. Для дней за пределами указанного месяца номер дня равен `0`.5455#### `itermonthdays2(year, month)`5657Возвращает итератор для месяца *month* года *year*, аналогично [`itermonthdates()`](https://python-all.ru/3.16/library/calendar.html#calendar.Calendar.itermonthdates), но без ограничения по диапазону [`datetime.date`](https://python-all.ru/3.16/library/datetime.html#datetime.date). Возвращаемые дни будут кортежами из номера дня месяца и номера дня недели.5859#### `itermonthdays3(year, month)`6061Возвращает итератор для месяца *month* года *year*, аналогично [`itermonthdates()`](https://python-all.ru/3.16/library/calendar.html#calendar.Calendar.itermonthdates), но без ограничения по диапазону [`datetime.date`](https://python-all.ru/3.16/library/datetime.html#datetime.date). Возвращаемые дни будут кортежами из года, месяца и номера дня месяца.6263Добавлено в версии 3.7.6465#### `itermonthdays4(year, month)`6667Возвращает итератор для месяца *month* года *year*, аналогично [`itermonthdates()`](https://python-all.ru/3.16/library/calendar.html#calendar.Calendar.itermonthdates), но без ограничения по диапазону [`datetime.date`](https://python-all.ru/3.16/library/datetime.html#datetime.date). Возвращаемые дни будут кортежами из года, месяца, номера дня месяца и номера дня недели.6869Добавлено в версии 3.7.7071#### `monthdatescalendar(year, month)`7273Возвращает список недель в месяце *month* года *year* в виде полных недель. Каждая неделя – список из семи объектов [`datetime.date`](https://python-all.ru/3.16/library/datetime.html#datetime.date).7475#### `monthdays2calendar(year, month)`7677Возвращает список недель в месяце *month* года *year* в виде полных недель. Каждая неделя – это список из семи кортежей с номером дня и номером дня недели.7879#### `monthdayscalendar(year, month)`8081Возвращает список недель в месяце *month* года *year* в виде полных недель. Каждая неделя – это список из семи номеров дней.8283#### `yeardatescalendar(year, width=3)`8485Возвращает данные для указанного года, готовые к форматированию. Возвращаемое значение – это список строк месяцев. Каждая строка месяца содержит до *width* месяцев (по умолчанию 3). Каждый месяц содержит от 4 до 6 недель, а каждая неделя – от 1 до 7 дней. Дни представлены объектами [`datetime.date`](https://python-all.ru/3.16/library/datetime.html#datetime.date).8687#### `yeardays2calendar(year, width=3)`8889Возвращает данные для указанного года, готовые к форматированию (аналогично [`yeardatescalendar()`](https://python-all.ru/3.16/library/calendar.html#calendar.Calendar.yeardatescalendar)). Записи в списках недель – это кортежи из номера дня и номера дня недели. Номера дней за пределами этого месяца равны нулю.9091#### `yeardayscalendar(year, width=3)`9293Возвращает данные для указанного года, готовые к форматированию (аналогично [`yeardatescalendar()`](https://python-all.ru/3.16/library/calendar.html#calendar.Calendar.yeardatescalendar)). Записи в списках недель – это номера дней. Номера дней за пределами этого месяца равны нулю.9495#### `class calendar.TextCalendar(firstweekday=0)`9697Этот класс можно использовать для создания текстовых календарей.9899Экземпляры `TextCalendar` имеют следующие методы:100101#### `prweek(theweek, width)`102103Печатает календарь недели, возвращённый [`formatweek()`](https://python-all.ru/3.16/library/calendar.html#calendar.TextCalendar.formatweek), и без завершающего символа новой строки.104105#### `formatday(theday, weekday, width)`106107Возвращает строку, представляющую отдельный день, отформатированный с указанной *width*. Если *theday* равно `0`, возвращается строка из пробелов указанной ширины, обозначающая пустой день. Параметр *weekday* не используется.108109#### `formatweek(theweek, w=0)`110111Возвращает одну неделю в виде строки без перевода строки. Если указан параметр *w*, он задаёт ширину столбцов с датами, которые центрируются. Зависит от первого дня недели, указанного в конструкторе или заданного методом [`setfirstweekday()`](https://python-all.ru/3.16/library/calendar.html#calendar.setfirstweekday).112113#### `formatweekday(weekday, width)`114115Возвращает строку с названием одного дня недели, отформатированную до указанной *width*. Параметр *weekday* – это целое число, представляющее день недели, где `0` – понедельник, а `6` – воскресенье.116117#### `formatweekheader(width)`118119Возвращает строку, содержащую заголовок с названиями дней недели, отформатированный с указанной *width* для каждого столбца. Названия зависят от настроек локали и дополняются пробелами до указанной ширины.120121#### `formatmonth(theyear, themonth, w=0, l=0)`122123Возвращает календарь месяца в виде многострочной строки. Если указан параметр *w*, он задаёт ширину столбцов с датами, которые центрируются. Если указан параметр *l*, он задаёт количество строк, которое будет занимать каждая неделя. Зависит от первого дня недели, указанного в конструкторе или заданного методом [`setfirstweekday()`](https://python-all.ru/3.16/library/calendar.html#calendar.setfirstweekday).124125#### `formatmonthname(theyear, themonth, width=0, withyear=True)`126127Возвращает строку с названием месяца, центрированным в пределах указанной *width*. Если *withyear* равно `True`, в вывод включается год. Параметры *theyear* и *themonth* задают соответственно год и месяц для форматирования названия.128129#### `prmonth(theyear, themonth, w=0, l=0)`130131Печатает календарь месяца, возвращаемый функцией [`formatmonth()`](https://python-all.ru/3.16/library/calendar.html#calendar.TextCalendar.formatmonth).132133#### `formatyear(theyear, w=2, l=1, c=6, m=3)`134135Возвращает календарь на весь год с *m* столбцами в виде многострочной строки. Необязательные параметры *w*, *l* и *c* задают ширину столбца даты, количество строк на неделю и количество пробелов между столбцами месяцев соответственно. Зависит от первого дня недели, указанного в конструкторе или заданного методом [`setfirstweekday()`](https://python-all.ru/3.16/library/calendar.html#calendar.setfirstweekday). Самый ранний год, для которого можно сгенерировать календарь, зависит от платформы.136137#### `pryear(theyear, w=2, l=1, c=6, m=3)`138139Печатает календарь на весь год, возвращаемый функцией [`formatyear()`](https://python-all.ru/3.16/library/calendar.html#calendar.TextCalendar.formatyear).140141#### `class calendar.HTMLCalendar(firstweekday=0)`142143Этот класс можно использовать для создания HTML-календарей.144145Экземпляры `HTMLCalendar` имеют следующие методы:146147#### `formatmonth(theyear, themonth, withyear=True)`148149Возвращает календарь месяца в виде HTML-таблицы. Если *withyear* равен true, год будет включен в заголовок, иначе будет использовано только название месяца.150151#### `formatyear(theyear, width=3)`152153Возвращает календарь года в виде HTML-таблицы. *width* (по умолчанию 3) задает количество месяцев в строке.154155#### `formatyearpage(theyear, width=3, css='calendar.css', encoding=None)`156157Возвращает годовой календарь в виде полной HTML-страницы. *width* (по умолчанию 3) задаёт количество месяцев на строку. *css* – имя таблицы стилей. [`None`](https://python-all.ru/3.16/library/constants.html#None) можно передать, если таблица стилей не нужна. *encoding* задаёт кодировку вывода (по умолчанию `'utf-8'`).158159#### `formatmonthname(theyear, themonth, withyear=True)`160161Возвращает название месяца в виде строки HTML-таблицы. Если *withyear* равен true, год будет включен в строку, иначе будет использовано только название месяца.162163`HTMLCalendar` имеет следующие атрибуты, которые можно переопределить для настройки CSS-классов, используемых календарем:164165#### `cssclasses`166167Список CSS-классов, используемых для каждого дня недели. Список классов по умолчанию:168169```python170cssclasses = ["mon", "tue", "wed", "thu", "fri", "sat", "sun"]171```172173для каждого дня можно добавить больше стилей:174175```python176cssclasses = ["mon text-bold", "tue", "wed", "thu", "fri", "sat", "sun red"]177```178179Обратите внимание, что длина этого списка должна быть равна семи элементам.180181#### `cssclass_noday`182183CSS-класс для дня недели, приходящегося на предыдущий или следующий месяц.184185Добавлено в версии 3.7.186187#### `cssclasses_weekday_head`188189Список CSS-классов, используемых для названий дней недели в строке заголовка. По умолчанию такой же, как [`cssclasses`](https://python-all.ru/3.16/library/calendar.html#calendar.HTMLCalendar.cssclasses).190191Добавлено в версии 3.7.192193#### `cssclass_month_head`194195CSS-класс заголовка месяца (используется [`formatmonthname()`](https://python-all.ru/3.16/library/calendar.html#calendar.HTMLCalendar.formatmonthname)). Значение по умолчанию – `"month"`.196197Добавлено в версии 3.7.198199#### `cssclass_month`200201CSS-класс для таблицы целого месяца (используется [`formatmonth()`](https://python-all.ru/3.16/library/calendar.html#calendar.HTMLCalendar.formatmonth)). Значение по умолчанию – `"month"`.202203Добавлено в версии 3.7.204205#### `cssclass_year`206207CSS-класс для таблицы таблиц всего года (используется [`formatyear()`](https://python-all.ru/3.16/library/calendar.html#calendar.HTMLCalendar.formatyear)). Значение по умолчанию – `"year"`.208209Добавлено в версии 3.7.210211#### `cssclass_year_head`212213CSS-класс для заголовка таблицы всего года (используется [`formatyear()`](https://python-all.ru/3.16/library/calendar.html#calendar.HTMLCalendar.formatyear)). Значение по умолчанию – `"year"`.214215Добавлено в версии 3.7.216217Обратите внимание, что, хотя названия описанных выше атрибутов классов стоят в единственном числе (например, `cssclass_month` `cssclass_noday`), можно заменить одиночный CSS-класс на список CSS-классов, разделенных пробелами, например:218219```python220"text-bold text-red"221```222223Вот пример того, как можно настроить `HTMLCalendar`:224225```python226class CustomHTMLCal(calendar.HTMLCalendar):227 cssclasses = [style + " text-nowrap" for style in228 calendar.HTMLCalendar.cssclasses]229 cssclass_month_head = "text-center month-head"230 cssclass_month = "text-center month"231 cssclass_year = "text-italic lead"232```233234#### `class calendar.LocaleTextCalendar(firstweekday=0, locale=None)`235236Этот подкласс [`TextCalendar`](https://python-all.ru/3.16/library/calendar.html#calendar.TextCalendar) может принимать название локали в конструкторе и будет возвращать названия месяцев и дней недели в указанной локали.237238#### `class calendar.LocaleHTMLCalendar(firstweekday=0, locale=None)`239240Этот подкласс [`HTMLCalendar`](https://python-all.ru/3.16/library/calendar.html#calendar.HTMLCalendar) может принимать название локали в конструкторе и будет возвращать названия месяцев и дней недели в указанной локали.241242> **Примечание**243>244> Конструктор, методы `formatweekday()` и `formatmonthname()` этих двух классов временно изменяют локаль `LC_TIME` на заданную *locale*. Поскольку текущая локаль – это настройка всего процесса, они не потокобезопасны.245246Для простых текстовых календарей этот модуль предоставляет следующие функции.247248#### `calendar.setfirstweekday(weekday)`249250Устанавливает день недели (`0` – понедельник, `6` – воскресенье), с которого начинается каждая неделя. Для удобства предоставлены значения [`MONDAY`](https://python-all.ru/3.16/library/calendar.html#calendar.MONDAY), [`TUESDAY`](https://python-all.ru/3.16/library/calendar.html#calendar.TUESDAY), [`WEDNESDAY`](https://python-all.ru/3.16/library/calendar.html#calendar.WEDNESDAY), [`THURSDAY`](https://python-all.ru/3.16/library/calendar.html#calendar.THURSDAY), [`FRIDAY`](https://python-all.ru/3.16/library/calendar.html#calendar.FRIDAY), [`SATURDAY`](https://python-all.ru/3.16/library/calendar.html#calendar.SATURDAY) и [`SUNDAY`](https://python-all.ru/3.16/library/calendar.html#calendar.SUNDAY). Например, чтобы первым днём недели было воскресенье:251252```python253import calendar254calendar.setfirstweekday(calendar.SUNDAY)255```256257#### `calendar.firstweekday()`258259Возвращает текущую настройку дня недели, с которого начинается каждая неделя.260261#### `calendar.isleap(year)`262263Возвращает [`True`](https://python-all.ru/3.16/library/constants.html#True), если *year* – високосный год, иначе [`False`](https://python-all.ru/3.16/library/constants.html#False).264265#### `calendar.leapdays(y1, y2)`266267Возвращает количество високосных лет в диапазоне от *y1* до *y2* (не включая), где *y1* и *y2* – это годы.268269Эта функция работает для диапазонов, охватывающих смену столетий.270271#### `calendar.weekday(year, month, day)`272273Возвращает день недели (`0` – понедельник) для *year* (`1970`–…), *month* (`1`–`12`), *day* (`1`–`31`).274275#### `calendar.weekheader(n)`276277Возвращает заголовок, содержащий сокращённые названия дней недели. *n* задаёт ширину в символах для одного дня недели.278279#### `calendar.monthrange(year, month)`280281Возвращает день недели первого дня месяца и количество дней в месяце для указанных *year* и *month*.282283#### `calendar.monthcalendar(year, month)`284285Возвращает матрицу, представляющую календарь на месяц. Каждая строка представляет неделю; дни вне месяца представлены нулями. Каждая неделя начинается с понедельника, если не задано иное через [`setfirstweekday()`](https://python-all.ru/3.16/library/calendar.html#calendar.setfirstweekday).286287#### `calendar.prmonth(theyear, themonth, w=0, l=0)`288289Выводит календарь на месяц, возвращаемый функцией [`month()`](https://python-all.ru/3.16/library/calendar.html#calendar.month).290291#### `calendar.month(theyear, themonth, w=0, l=0)`292293Возвращает календарь на месяц в виде многострочной строки с помощью [`formatmonth()`](https://python-all.ru/3.16/library/calendar.html#calendar.TextCalendar.formatmonth) класса [`TextCalendar`](https://python-all.ru/3.16/library/calendar.html#calendar.TextCalendar).294295#### `calendar.prcal(year, w=0, l=0, c=6, m=3)`296297Выводит календарь на целый год, возвращаемый функцией [`calendar()`](https://python-all.ru/3.16/library/calendar.html#module-calendar).298299#### `calendar.calendar(year, w=2, l=1, c=6, m=3)`300301Возвращает календарь на целый год в три колонки в виде многострочной строки с помощью [`formatyear()`](https://python-all.ru/3.16/library/calendar.html#calendar.TextCalendar.formatyear) класса [`TextCalendar`](https://python-all.ru/3.16/library/calendar.html#calendar.TextCalendar).302303#### `calendar.timegm(tuple)`304305Не связанная напрямую, но полезная функция, которая принимает временной кортеж, такой как возвращается функцией [`gmtime()`](https://python-all.ru/3.16/library/time.html#time.gmtime) в модуле [`time`](https://python-all.ru/3.16/library/time.html#module-time), и возвращает соответствующее значение временной метки Unix, предполагая эпоху 1970 года и кодировку POSIX. На самом деле, `time.gmtime()` и `timegm()` являются обратными друг другу.306307Модуль `calendar` экспортирует следующие атрибуты данных:308309#### `calendar.day_name`310311Последовательность, представляющая дни недели в текущей локали, где понедельник – день номер 0.312313```python314>>> import calendar315>>> list(calendar.day_name)316['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday']317```318319#### `calendar.day_abbr`320321Последовательность, представляющая сокращённые названия дней недели в текущей локали, где Mon – день номер 0.322323```python324>>> import calendar325>>> list(calendar.day_abbr)326['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']327```328329#### `calendar.MONDAY`330331#### `calendar.TUESDAY`332333#### `calendar.WEDNESDAY`334335#### `calendar.THURSDAY`336337#### `calendar.FRIDAY`338339#### `calendar.SATURDAY`340341#### `calendar.SUNDAY`342343Псевдонимы для дней недели, где `MONDAY` – это `0`, а `SUNDAY` – это `6`.344345Добавлено в версии 3.12.346347#### `class calendar.Day`348349Перечисление, определяющее дни недели как целочисленные константы. Его члены экспортируются в пространство имён модуля как [`MONDAY`](https://python-all.ru/3.16/library/calendar.html#calendar.MONDAY) и [`SUNDAY`](https://python-all.ru/3.16/library/calendar.html#calendar.SUNDAY).350351Добавлено в версии 3.12.352353#### `calendar.month_name`354355Последовательность, представляющая месяцы года в текущей локали. Следует обычному соглашению, согласно которому январь – месяц номер 1, поэтому её длина равна 13, а `month_name[0]` – пустая строка.356357```python358>>> import calendar359>>> list(calendar.month_name)360['', 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']361```362363> **Внимание**364>365> В локалях с альтернативными формами названий месяцев последовательность `month_name` может не подходить, когда название месяца стоит отдельно, а не как часть даты. Например, в греческом и во многих славянских и балтийских языках `month_name` выдаст месяц в родительном падеже. Используйте [`standalone_month_name`](https://python-all.ru/3.16/library/calendar.html#calendar.standalone_month_name) для формы, подходящей для самостоятельного использования.366367#### `calendar.month_abbr`368369Последовательность, представляющая сокращённые названия месяцев года в текущей локали. Следует обычному соглашению, согласно которому январь – месяц номер 1, поэтому её длина равна 13, а `month_abbr[0]` – пустая строка.370371```python372>>> import calendar373>>> list(calendar.month_abbr)374['', 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']375```376377> **Внимание**378>379> В локалях с альтернативными формами названий месяцев последовательность `month_abbr` может не подходить, когда название месяца стоит отдельно, а не как часть даты. Используйте [`standalone_month_abbr`](https://python-all.ru/3.16/library/calendar.html#calendar.standalone_month_abbr) для формы, подходящей для самостоятельного использования.380381#### `calendar.standalone_month_name`382383Последовательность, представляющая месяцы года в текущей локали в отдельной форме, если локаль её предоставляет. В противном случае она эквивалентна [`month_name`](https://python-all.ru/3.16/library/calendar.html#calendar.month_name).384385Добавлено в версии 3.15.386387#### `calendar.standalone_month_abbr`388389Последовательность, представляющая сокращённые названия месяцев года в текущей локали в отдельной форме, если локаль её предоставляет. В противном случае она эквивалентна [`month_abbr`](https://python-all.ru/3.16/library/calendar.html#calendar.month_abbr).390391Добавлено в версии 3.15.392393#### `calendar.JANUARY`394395#### `calendar.FEBRUARY`396397#### `calendar.MARCH`398399#### `calendar.APRIL`400401#### `calendar.MAY`402403#### `calendar.JUNE`404405#### `calendar.JULY`406407#### `calendar.AUGUST`408409#### `calendar.SEPTEMBER`410411#### `calendar.OCTOBER`412413#### `calendar.NOVEMBER`414415#### `calendar.DECEMBER`416417Псевдонимы для месяцев года, где `JANUARY` – это `1`, а `DECEMBER` – это `12`.418419Добавлено в версии 3.12.420421#### `class calendar.Month`422423Перечисление, определяющее месяцы года как целочисленные константы. Его члены экспортируются в пространство имён модуля как [`JANUARY`](https://python-all.ru/3.16/library/calendar.html#calendar.JANUARY) и [`DECEMBER`](https://python-all.ru/3.16/library/calendar.html#calendar.DECEMBER).424425Добавлено в версии 3.12.426427Модуль `calendar` определяет следующие исключения:428429#### `exception calendar.IllegalMonthError(month)`430431Подкласс [`ValueError`](https://python-all.ru/3.16/library/exceptions.html#ValueError) и [`IndexError`](https://python-all.ru/3.16/library/exceptions.html#IndexError), возбуждается, когда указанный номер месяца выходит за пределы диапазона 1–12 (включительно).432433Изменено в версии 3.12: `IllegalMonthError` теперь также является подклассом [`ValueError`](https://python-all.ru/3.16/library/exceptions.html#ValueError). В новом коде следует избегать перехвата [`IndexError`](https://python-all.ru/3.16/library/exceptions.html#IndexError).434435#### `month`436437Неверный номер месяца.438439#### `exception calendar.IllegalWeekdayError(weekday)`440441Подкласс [`ValueError`](https://python-all.ru/3.16/library/exceptions.html#ValueError), возбуждается, когда указанный номер дня недели выходит за пределы диапазона 0–6 (включительно).442443#### `weekday`444445Неверный номер дня недели.446447> **См. также**448>449> **Модуль [`datetime`](https://python-all.ru/3.16/library/datetime.html#module-datetime)**450>451> Объектно-ориентированный интерфейс для работы с датами и временем, предоставляющий функциональность, аналогичную модулю [`time`](https://python-all.ru/3.16/library/time.html#module-time).452>453> **Модуль [`time`](https://python-all.ru/3.16/library/time.html#module-time)**454>455> Низкоуровневые функции для работы со временем.456457## Использование командной строки458459Добавлено в версии 2.5.460461Модуль `calendar` можно запустить как скрипт из командной строки для интерактивного вывода календаря.462463```shell464python -m calendar [-h] [-L LOCALE] [-e ENCODING] [-t {text,html}]465 [-w WIDTH] [-l LINES] [-s SPACING] [-m MONTHS] [-c CSS]466 [-f FIRST_WEEKDAY] [year] [month]467```468469Например, чтобы вывести календарь на 2000 год:470471```console472$ python -m calendar 2000473 2000474475 January February March476Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su477 1 2 1 2 3 4 5 6 1 2 3 4 5478 3 4 5 6 7 8 9 7 8 9 10 11 12 13 6 7 8 9 10 11 1247910 11 12 13 14 15 16 14 15 16 17 18 19 20 13 14 15 16 17 18 1948017 18 19 20 21 22 23 21 22 23 24 25 26 27 20 21 22 23 24 25 2648124 25 26 27 28 29 30 28 29 27 28 29 30 3148231483484 April May June485Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su486 1 2 1 2 3 4 5 6 7 1 2 3 4487 3 4 5 6 7 8 9 8 9 10 11 12 13 14 5 6 7 8 9 10 1148810 11 12 13 14 15 16 15 16 17 18 19 20 21 12 13 14 15 16 17 1848917 18 19 20 21 22 23 22 23 24 25 26 27 28 19 20 21 22 23 24 2549024 25 26 27 28 29 30 29 30 31 26 27 28 29 30491492 July August September493Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su494 1 2 1 2 3 4 5 6 1 2 3495 3 4 5 6 7 8 9 7 8 9 10 11 12 13 4 5 6 7 8 9 1049610 11 12 13 14 15 16 14 15 16 17 18 19 20 11 12 13 14 15 16 1749717 18 19 20 21 22 23 21 22 23 24 25 26 27 18 19 20 21 22 23 2449824 25 26 27 28 29 30 28 29 30 31 25 26 27 28 29 3049931500501 October November December502Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su503 1 1 2 3 4 5 1 2 3504 2 3 4 5 6 7 8 6 7 8 9 10 11 12 4 5 6 7 8 9 10505 9 10 11 12 13 14 15 13 14 15 16 17 18 19 11 12 13 14 15 16 1750616 17 18 19 20 21 22 20 21 22 23 24 25 26 18 19 20 21 22 23 2450723 24 25 26 27 28 29 27 28 29 30 25 26 27 28 29 30 3150830 31509```510511Принимаются следующие опции:512513#### `--help, -h`514515Показать справку и выйти.516517#### `--locale LOCALE, -L LOCALE`518519Языковой стандарт (локаль), используемый для названий месяцев и дней недели. По умолчанию – английский.520521#### `--encoding ENCODING, -e ENCODING`522523Кодировка, используемая для вывода. [`--encoding`](https://python-all.ru/3.16/library/calendar.html#cmdoption-calendar-encoding) обязательна, если задан [`--locale`](https://python-all.ru/3.16/library/calendar.html#cmdoption-calendar-locale).524525#### `--type {text,html}, -t {text,html}`526527Вывод календаря в терминал в виде текста или HTML-документа.528529#### `--first-weekday FIRST_WEEKDAY, -f FIRST_WEEKDAY`530531День недели, с которого начинается каждая неделя. Должен быть числом от 0 (понедельник) до 6 (воскресенье). По умолчанию – 0.532533Добавлено в версии 3.13.534535#### `year`536537Год, для которого выводится календарь. По умолчанию – текущий год.538539#### `month`540541Месяц указанного [`year`](https://python-all.ru/3.16/library/calendar.html#cmdoption-calendar-arg-year), для которого вывести календарь. Должен быть числом от 1 до 12. По умолчанию выводится календарь на весь год.542543*Опции текстового режима:*544545#### `--width WIDTH, -w WIDTH`546547Ширина столбца с датой в символах терминала. Дата выводится по центру столбца. Любое значение меньше 2 игнорируется. По умолчанию – 2.548549#### `--lines LINES, -l LINES`550551Количество строк для каждой недели в рядах терминала. Дата выводится с выравниванием по верхнему краю. Любое значение меньше 1 игнорируется. По умолчанию – 1.552553#### `--spacing SPACING, -s SPACING`554555Расстояние между месяцами в столбцах. Любое значение меньше 2 игнорируется. По умолчанию: 6.556557#### `--months MONTHS, -m MONTHS`558559Количество месяцев, выводимых в одной строке. По умолчанию: 3.560561Изменено в версии 3.14: По умолчанию сегодняшняя дата выделяется цветом; её можно [настроить с помощью переменных окружения](https://python-all.ru/3.16/using/cmdline.html#using-on-controlling-color).562563Изменено в версии 3.15: По умолчанию месяц теперь также выделяется цветом, и дни недели тоже цветные. Это поведение можно [настроить с помощью переменных окружения](https://python-all.ru/3.16/using/cmdline.html#using-on-controlling-color).564565*Параметры режима HTML:*566567#### `--css CSS, -c CSS`568569Путь к CSS-таблице стилей, используемой для календаря. Путь должен быть либо относительным по отношению к генерируемому HTML, либо абсолютным HTTP- или `file:///` URL.570