calendar — Общие функции, связанные с календарем
Исходный код: Lib/calendar.py
Этот модуль позволяет выводить календари, подобно программе Unix cal, и предоставляет дополнительные полезные функции, связанные с календарем. По умолчанию эти календари имеют понедельник в качестве первого дня недели, а воскресенье — последним (европейская конвенция). Используйте setfirstweekday(), чтобы установить первый день недели на воскресенье (6) или любой другой день недели. Параметры, определяющие даты, задаются как целые числа. Для связанной функциональности см. также модули datetime и time.
Функции и классы, определённые в этом модуле, используют идеализированный календарь, текущий григорианский календарь, расширенный до бесконечности в обоих направлениях. Это соответствует определению «пролептического григорианского» календаря в книге Дершовица и Рейнгольда «Вычисления календаря», где он является базовым календарем для всех вычислений. Нулевые и отрицательные годы интерпретируются в соответствии со стандартом ISO 8601. Год 0 — это 1 до нашей эры, год -1 — 2 до нашей эры и так далее.
-
class calendar.Calendar(firstweekday=0) -
Создаёт объект
Calendar. firstweekday — целое число, определяющее первый день недели. Понедельник (по умолчанию) —6, воскресенье —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 задаёт кодировку вывода (по умолчанию — системная кодировка).
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_monthcssclass_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() этих двух классов временно изменяют текущую локаль на заданную locale. Поскольку текущая локаль — это настройка, действующая для всего процесса, они не являются потокобезопасными.
Для простых текстовых календарей в этом модуле предоставлены следующие функции.
-
calendar.setfirstweekday(weekday) -
Устанавливает день недели (
0— понедельник,6— воскресенье) для начала каждой недели. ЗначенияMONDAY,TUESDAY,WEDNESDAY,THURSDAY,FRIDAY,SATURDAY, иSUNDAYпредоставляются для удобства. Например, для установки первого дня недели на воскресенье:import calendar calendar.setfirstweekday(calendar.SUNDAY)
-
calendar.firstweekday() -
Возвращает текущее значение для дня недели, с которого начинается каждая неделя.
-
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 timestamp, предполагая эпоху 1970 и кодировку POSIX. Фактически,time.gmtime()иtimegm()являются обратными друг другу.
Модуль calendar экспортирует следующие данные:
-
calendar.day_name -
Массив, представляющий дни недели в текущей локали.
-
calendar.day_abbr -
Массив, представляющий сокращённые названия дней недели в текущей локали.
-
calendar.month_name -
Массив, представляющий месяцы года в текущей локали. Следуя стандартной конвенции, где январь — месяц номер 1, имеет длину 13, а
month_name[0]— пустая строка.
-
calendar.month_abbr -
Массив, представляющий сокращённые названия месяцев года в текущей локали. Следуя стандартной конвенции, где январь — месяц номер 1, имеет длину 13, а
month_abbr[0]— пустая строка.
См. также
© 2001–2020 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.7/library/calendar.html