Документация Python неофициальный перевод

calendar.md

209 строк · 19.0 КБ · обычная страница · сырой текст · скачать

1> **Источник:** https://python-all.ru/3.4/library/calendar.html2>3> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.45---67# 8.2. [`calendar`](https://python-all.ru/3.4/library/calendar.html#module-calendar) – Общие функции календаря89**Исходный код:** [Lib/calendar.py](https://python-all.ru/src/3.4/Lib/calendar.py)1011---1213Этот модуль позволяет выводить календари, как программа **cal** в Unix, и предоставляет дополнительные полезные функции, связанные с календарем. По умолчанию в этих календарях первый день недели – понедельник, а последний – воскресенье (европейская конвенция). Используйте [`setfirstweekday()`](https://python-all.ru/3.4/library/calendar.html#calendar.setfirstweekday), чтобы установить первым днём недели воскресенье (6) или любой другой день недели. Параметры, задающие даты, передаются как целые числа. За дополнительными возможностями обращайтесь также к модулям [`datetime`](https://python-all.ru/3.4/library/datetime.html#module-datetime) и [`time`](https://python-all.ru/3.4/library/time.html#module-time).1415Большинство этих функций и классов полагаются на модуль [`datetime`](https://python-all.ru/3.4/library/datetime.html#module-datetime), который использует идеализированный календарь – текущий григорианский календарь, расширенный в обе стороны. Это соответствует определению «пролептического григорианского» календаря в книге Дершовица и Рейнгольда «Календарные вычисления», где он является базовым календарём для всех вычислений.1617#### `class calendar.Calendar(firstweekday=0)`1819Создаёт объект [`Calendar`](https://python-all.ru/3.4/library/calendar.html#calendar.Calendar). *firstweekday* – целое число, задающее первый день недели. `0` – понедельник (по умолчанию), `6` – воскресенье.2021Объект [`Calendar`](https://python-all.ru/3.4/library/calendar.html#calendar.Calendar) предоставляет несколько методов, которые можно использовать для подготовки данных календаря к форматированию. Этот класс сам не выполняет форматирование. Это задача подклассов.2223Экземпляры [`Calendar`](https://python-all.ru/3.4/library/calendar.html#calendar.Calendar) имеют следующие методы:2425#### `iterweekdays()`2627Возвращает итератор номеров дней недели, которые будут использоваться для одной недели. Первое значение из итератора будет совпадать со значением свойства [`firstweekday`](https://python-all.ru/3.4/library/calendar.html#calendar.firstweekday).2829#### `itermonthdates(year, month)`3031Возвращает итератор для месяца *month* (1-12) в году *year*. Этот итератор возвращает все дни (как объекты [`datetime.date`](https://python-all.ru/3.4/library/datetime.html#datetime.date)) за месяц и все дни до начала месяца или после его окончания, которые необходимы для получения полной недели.3233#### `itermonthdays2(year, month)`3435Возвращает итератор для месяца *month* в году *year*, аналогично [`itermonthdates()`](https://python-all.ru/3.4/library/calendar.html#calendar.Calendar.itermonthdates). Возвращаемые дни представляют собой кортежи, состоящие из номера дня и номера дня недели.3637#### `itermonthdays(year, month)`3839Возвращает итератор для месяца *month* в году *year*, аналогично [`itermonthdates()`](https://python-all.ru/3.4/library/calendar.html#calendar.Calendar.itermonthdates). Возвращаемые дни – это просто номера дней.4041#### `monthdatescalendar(year, month)`4243Возвращает список недель в месяце *month* года *year* в виде полных недель. Недели представляют собой списки из семи объектов [`datetime.date`](https://python-all.ru/3.4/library/datetime.html#datetime.date).4445#### `monthdays2calendar(year, month)`4647Возвращает список недель в месяце *month* года *year* в виде полных недель. Каждая неделя – это список из семи кортежей с номером дня и номером дня недели.4849#### `monthdayscalendar(year, month)`5051Возвращает список недель в месяце *month* года *year* в виде полных недель. Каждая неделя – это список из семи номеров дней.5253#### `yeardatescalendar(year, width=3)`5455Возвращает данные для указанного года, готовые к форматированию. Возвращаемое значение – это список строк месяцев. Каждая строка месяца содержит до *width* месяцев (по умолчанию 3). Каждый месяц содержит от 4 до 6 недель, и каждая неделя содержит от 1 до 7 дней. Дни – это объекты [`datetime.date`](https://python-all.ru/3.4/library/datetime.html#datetime.date).5657#### `yeardays2calendar(year, width=3)`5859Возвращает данные для указанного года, готовые к форматированию (аналогично [`yeardatescalendar()`](https://python-all.ru/3.4/library/calendar.html#calendar.Calendar.yeardatescalendar)). Записи в списках недель – это кортежи номеров дней и номеров дней недели. Номера дней вне этого месяца равны нулю.6061#### `yeardayscalendar(year, width=3)`6263Возвращает данные для указанного года, готовые к форматированию (аналогично [`yeardatescalendar()`](https://python-all.ru/3.4/library/calendar.html#calendar.Calendar.yeardatescalendar)). Записи в списках недель – это номера дней. Номера дней вне этого месяца равны нулю.6465#### `class calendar.TextCalendar(firstweekday=0)`6667Этот класс можно использовать для создания текстовых календарей.6869Экземпляры [`TextCalendar`](https://python-all.ru/3.4/library/calendar.html#calendar.TextCalendar) имеют следующие методы:7071#### `formatmonth(theyear, themonth, w=0, l=0)`7273Возвращает календарь месяца в виде многострочной строки. Если указан *w*, он задаёт ширину столбцов с датами, которые выравниваются по центру. Если указан *l*, он задаёт количество строк, которое будет использоваться для каждой недели. Зависит от первого дня недели, указанного в конструкторе или установленного методом [`setfirstweekday()`](https://python-all.ru/3.4/library/calendar.html#calendar.setfirstweekday).7475#### `prmonth(theyear, themonth, w=0, l=0)`7677Выводит календарь месяца, возвращаемый методом [`formatmonth()`](https://python-all.ru/3.4/library/calendar.html#calendar.TextCalendar.formatmonth).7879#### `formatyear(theyear, w=2, l=1, c=6, m=3)`8081Возвращает календарь на целый год с *m* столбцами в виде многострочной строки. Необязательные параметры *w*, *l* и *c* задают ширину столбца дат, количество строк на неделю и количество пробелов между столбцами месяцев соответственно. Зависит от первого дня недели, указанного в конструкторе или заданного методом [`setfirstweekday()`](https://python-all.ru/3.4/library/calendar.html#calendar.setfirstweekday). Самый ранний год, для которого можно сгенерировать календарь, зависит от платформы.8283#### `pryear(theyear, w=2, l=1, c=6, m=3)`8485Выводит календарь на целый год, возвращённый методом [`formatyear()`](https://python-all.ru/3.4/library/calendar.html#calendar.TextCalendar.formatyear).8687#### `class calendar.HTMLCalendar(firstweekday=0)`8889Этот класс можно использовать для создания HTML-календарей.9091Экземпляры [`HTMLCalendar`](https://python-all.ru/3.4/library/calendar.html#calendar.HTMLCalendar) имеют следующие методы:9293#### `formatmonth(theyear, themonth, withyear=True)`9495Возвращает календарь месяца в виде HTML-таблицы. Если *withyear* равен true, год будет включен в заголовок, иначе будет использовано только название месяца.9697#### `formatyear(theyear, width=3)`9899Возвращает календарь года в виде HTML-таблицы. *width* (по умолчанию 3) задает количество месяцев в строке.100101#### `formatyearpage(theyear, width=3, css='calendar.css', encoding=None)`102103Возвращает календарь на год в виде полной HTML-страницы. *width* (по умолчанию 3) задаёт количество месяцев в строке. *css* – это имя используемой каскадной таблицы стилей. [`None`](https://python-all.ru/3.4/library/constants.html#None) можно передать, если таблицу стилей использовать не нужно. *encoding* задаёт кодировку для вывода (по умолчанию используется системная кодировка).104105#### `class calendar.LocaleTextCalendar(firstweekday=0, locale=None)`106107Этот подкласс [`TextCalendar`](https://python-all.ru/3.4/library/calendar.html#calendar.TextCalendar) позволяет передать имя локали в конструктор и будет возвращать названия месяцев и дней недели на указанной локали. Если локаль включает кодировку, все строки, содержащие названия месяцев и дней недели, будут возвращены в Юникоде.108109#### `class calendar.LocaleHTMLCalendar(firstweekday=0, locale=None)`110111Этот подкласс [`HTMLCalendar`](https://python-all.ru/3.4/library/calendar.html#calendar.HTMLCalendar) позволяет передать имя локали в конструктор и будет возвращать названия месяцев и дней недели на указанной локали. Если локаль включает кодировку, все строки, содержащие названия месяцев и дней недели, будут возвращены в Юникоде.112113> **Примечание**114>115> Методы `formatweekday()` и `formatmonthname()` этих двух классов временно меняют текущую локаль на заданную *locale*. Поскольку текущая локаль является общепроцессной настройкой, эти методы не являются потокобезопасными.116117Для простых текстовых календарей этот модуль предоставляет следующие функции.118119#### `calendar.setfirstweekday(weekday)`120121Устанавливает день недели, с которого начинается каждая неделя (`0` – понедельник, `6` – воскресенье). Константы `MONDAY`, `TUESDAY`, `WEDNESDAY`, `THURSDAY`, `FRIDAY`, `SATURDAY` и `SUNDAY` предусмотрены для удобства. Например, чтобы установить первый день недели на воскресенье:122123```python124import calendar125calendar.setfirstweekday(calendar.SUNDAY)126```127128#### `calendar.firstweekday()`129130Возвращает текущую настройку дня недели, с которого начинается каждая неделя.131132#### `calendar.isleap(year)`133134Возвращает [`True`](https://python-all.ru/3.4/library/constants.html#True), если *year* – високосный год, иначе [`False`](https://python-all.ru/3.4/library/constants.html#False).135136#### `calendar.leapdays(y1, y2)`137138Возвращает количество високосных лет в диапазоне от *y1* до *y2* (не включая), где *y1* и *y2* – это годы.139140Эта функция работает для диапазонов, охватывающих смену столетий.141142#### `calendar.weekday(year, month, day)`143144Возвращает день недели (`0` – понедельник) для *year* (`1970`–...), *month* (`1``12`), *day* (`1``31`).145146#### `calendar.weekheader(n)`147148Возвращает заголовок, содержащий сокращённые названия дней недели. *n* задаёт ширину в символах для одного дня недели.149150#### `calendar.monthrange(year, month)`151152Возвращает день недели первого дня месяца и количество дней в месяце для указанных *year* и *month*.153154#### `calendar.monthcalendar(year, month)`155156Возвращает матрицу, представляющую календарь на месяц. Каждая строка представляет неделю; дни за пределами месяца представлены нулями. Каждая неделя начинается с понедельника, если не задано иное методом [`setfirstweekday()`](https://python-all.ru/3.4/library/calendar.html#calendar.setfirstweekday).157158#### `calendar.prmonth(theyear, themonth, w=0, l=0)`159160Выводит календарь на месяц, возвращённый методом [`month()`](https://python-all.ru/3.4/library/calendar.html#calendar.month).161162#### `calendar.month(theyear, themonth, w=0, l=0)`163164Возвращает календарь на месяц в виде многострочной строки с помощью метода `formatmonth()` класса [`TextCalendar`](https://python-all.ru/3.4/library/calendar.html#calendar.TextCalendar).165166#### `calendar.prcal(year, w=0, l=0, c=6, m=3)`167168Печатает календарь на весь год, как возвращается функцией [`calendar()`](https://python-all.ru/3.4/library/calendar.html#module-calendar).169170#### `calendar.calendar(year, w=2, l=1, c=6, m=3)`171172Возвращает календарь на весь год из трёх колонок в виде многострочной строки, используя метод `formatyear()` класса [`TextCalendar`](https://python-all.ru/3.4/library/calendar.html#calendar.TextCalendar).173174#### `calendar.timegm(tuple)`175176Не связанная, но полезная функция, которая принимает кортеж времени, например, возвращаемый функцией [`gmtime()`](https://python-all.ru/3.4/library/time.html#time.gmtime) из модуля [`time`](https://python-all.ru/3.4/library/time.html#module-time), и возвращает соответствующее значение временной метки Unix, предполагая эпоху 1970 года и кодировку POSIX. По сути, [`time.gmtime()`](https://python-all.ru/3.4/library/time.html#time.gmtime) и [`timegm()`](https://python-all.ru/3.4/library/calendar.html#calendar.timegm) являются обратными друг другу.177178Модуль [`calendar`](https://python-all.ru/3.4/library/calendar.html#module-calendar) экспортирует следующие атрибуты данных:179180#### `calendar.day_name`181182Массив, представляющий дни недели в текущей локали.183184#### `calendar.day_abbr`185186Массив, представляющий сокращённые названия дней недели в текущей локали.187188#### `calendar.month_name`189190Массив, представляющий месяцы года в текущей локали. Следует стандартному соглашению: январь – месяц номер 1, поэтому длина массива равна 13, и `month_name[0]` – пустая строка.191192#### `calendar.month_abbr`193194Массив, представляющий сокращённые названия месяцев года в текущей локали. Следует стандартному соглашению: январь – месяц номер 1, поэтому длина массива равна 13, и `month_abbr[0]` – пустая строка.195196> **См. также**197>198> **Модуль [`datetime`](https://python-all.ru/3.4/library/datetime.html#module-datetime)**199>200> Объектно-ориентированный интерфейс для дат и времени с функциональностью, аналогичной модулю201>202> [`time`](https://python-all.ru/3.4/library/time.html#module-time)203>204> .205>206> **Модуль [`time`](https://python-all.ru/3.4/library/time.html#module-time)**207>208> Низкоуровневые функции для работы со временем.209