Сообщить об ошибке.

Класс Calendar() модуля calendar в Python

Список дней за год или месяц с различной степенью вложенности

Синтаксис:

import calendar

cl = calendar.Calendar(firstweekday=0)

Параметры:

  • firstweekday=0 - int, устанавливает первый день недели, 0 соответствует понедельнику.

Возвращаемое значение:

Описание:

Класс Calendar() модуля calendar создает объект календаря. Аргумент firstweekday - целое число, указывающее первый день недели. Число 0 - понедельник (по умолчанию), 6 - воскресенье.

Объект Calendar определяет методы:


cl.iterweekdays():

Метод cl.iterweekdays() возвращает итератор номеров дней одной недели. Первое значение итератора будет таким же, как значение свойства firstweekday, заданное при создании экземпляра класса calendar.Calendar().

>>> import calendar
>>> cl = calendar.Calendar()
>>> rez = cl.iterweekdays()
>>> list(rez)
# [0, 1, 2, 3, 4, 5, 6]

cl.itermonthdates(year, month):

Метод cl.itermonthdates() возвращает итератор всех дней месяца month (1–12) в году year.

Итератор будет возвращать все дни, как объекты datetime.date за месяц и все дни до начала месяца или после конца месяца, которые требуются для получения полной недели.

>>> import calendar
>>> cl = calendar.Calendar()
>>> rez = cl.itermonthdates(2020, 7)
>>> list(rez)
# [datetime.date(2020, 6, 29), datetime.date(2020, 6, 30), 
# datetime.date(2020, 7, 1), datetime.date(2020, 7, 2)
# ..., ...,
# ..., ...,
# datetime.date(2020, 7, 30), datetime.date(2020, 7, 31), 
# datetime.date(2020, 8, 1), datetime.date(2020, 8, 2)]

cl.itermonthdays(year, month):

Метод cl.itermonthdays() возвращает итератор всех дней для месяца month в году year. Возвращенные дни будут просто числами месяца.

Итератор включает все дни до начала месяца и/или после конца месяца, которые требуются для получения полной недели. Для дней вне указанного месяца month номер дня равен 0.

>>> import calendar
>>> cl = calendar.Calendar()
>>> rez = cl.itermonthdays(2020, 7)
>>> list(rez)
# [0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 
# 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 
# 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 0, 0]

cl.itermonthdays2(year, month):

Метод cl.itermonthdays2() возвращает итератор всех дней для месяца month в году year. Возвращенные дни будут двойными кортежами, состоящими из № дня месяца и № дня недели, т. е. (day, week-day).

Итератор включает все дни до начала месяца и/или после конца месяца, которые требуются для получения полной недели. Для дней вне указанного месяца month номер дня будет равен 0.

>>> import calendar
>>> cl = calendar.Calendar()
>>> rez = cl.itermonthdays2(2020, 7)
>>> list(rez)
# [(0, 0), (0, 1), (1, 2), (2, 3), (3, 4), (4, 5), (5, 6), 
#  (6, 0), (7, 1), (8, 2), (9, 3), (10, 4), (11, 5), (12, 6), 
# ..., ...,
#  (27, 0), (28, 1), (29, 2), (30, 3), (31, 4), (0, 5), (0, 6)]

cl.itermonthdays3(year, month):

Метод cl.itermonthdays3() возвращает итератор всех дней для месяца month в году year.

Возвращенные дни будут тройными кортежами, состоящими из номера года, месяца и дня месяца (year, moth, day).

Итератор включает все дни до начала месяца и/или после конца месяца, которые требуются для получения полной недели.

>>> import calendar
>>> cl = calendar.Calendar()
>>> rez = cl.itermonthdays3(2020, 7)
>>> list(rez)
# [(2020, 6, 29), (2020, 6, 30), (2020, 7, 1), 
# (2020, 7, 2), (2020, 7, 3), (2020, 7, 4), 
# ..., ...,
# (2020, 7, 28), (2020, 7, 29), (2020, 7, 30), 
# (2020, 7, 31), (2020, 8, 1), (2020, 8, 2)]

cl.itermonthdays4(year, month):

Метод cl.itermonthdays4() возвращает итератор всех дней для месяца month в году year. Возвращенные дни будут кортежами, состоящими из четырех элементов - года, месяца, дня месяца и дня недели (year, month, day, week-day).

Итератор включает все дни до начала месяца и/или после конца месяца, которые требуются для получения полной недели.

>>> import calendar
>>> cl = calendar.Calendar()
>>> rez = cl.itermonthdays4(2020, 7)
>>> list(rez)
# [(2020, 6, 29, 0), (2020, 6, 30, 1), (2020, 7, 1, 2), 
# (2020, 7, 2, 3), (2020, 7, 3, 4), (2020, 7, 4, 5), 
# ..., ...,
# (2020, 7, 28, 1), (2020, 7, 29, 2), (2020, 7, 30, 3), 
# (2020, 7, 31, 4), (2020, 8, 1, 5), (2020, 8, 2, 6)]

cl.monthdatescalendar(year, month):

Метод cl.monthdatescalendar() возвращает список недель месяца month как полные недели. Недели, в свою очередь - это списки из семи объектов datetime.date().

Первый и последний списки дней недели включает все дни до начала месяца и/или после конца месяца, которые требуются для получения полной недели.

>>> import calendar
>>> cl = calendar.Calendar()
>>> cl.monthdatescalendar(2020, 7)
# [
# [datetime.date(2020, 6, 29),
# datetime.date(2020, 6, 30),
# datetime.date(2020, 7, 1),
# datetime.date(2020, 7, 2),
# datetime.date(2020, 7, 3),
# datetime.date(2020, 7, 4),
# datetime.date(2020, 7, 5)],
# ..., ...,
# [datetime.date(2020, 7, 27),
# datetime.date(2020, 7, 28),
# datetime.date(2020, 7, 29),
# datetime.date(2020, 7, 30),
# datetime.date(2020, 7, 31),
# datetime.date(2020, 8, 1),
# datetime.date(2020, 8, 2)]
# ]

cl.monthdays2calendar(year, month):

Метод cl.monthdays2calendar() возвращает список недель месяца month как полные недели. Недели, в свою очередь - это списки из семи двойных кортежей, состоящих из № дня месяца и № дня недели, т. е. (day, week-day).

Первый и последний списки дней недели включает все дни до начала месяца и/или после конца месяца, которые требуются для получения полной недели. Для дней вне указанного месяца month номер дня будет равен 0.

>>> import calendar
>>> cl = calendar.Calendar()
>>> cl.monthdays2calendar(2020, 7)
# [
# [(0, 0), (0, 1), (1, 2), (2, 3), (3, 4), (4, 5), (5, 6)], 
# [(6, 0), (7, 1), (8, 2), (9, 3), (10, 4), (11, 5), (12, 6)], 
# [(13, 0), (14, 1), (15, 2), (16, 3), (17, 4), (18, 5), (19, 6)], 
# [(20, 0), (21, 1), (22, 2), (23, 3), (24, 4), (25, 5), (26, 6)], 
# [(27, 0), (28, 1), (29, 2), (30, 3), (31, 4), (0, 5), (0, 6)]
# ]

cl.monthdayscalendar(year, month):

Метод cl.monthdayscalendar() возвращает список недель месяца month как полные недели. Недели, в свою очередь - это списки из семи номеров дней месяца.

Первый и последний списки дней недели включает все дни до начала месяца и/или после конца месяца, которые требуются для получения полной недели. Для дней вне указанного месяца month номер дня будет равен 0.

>>> import calendar
>>> cl = calendar.Calendar()
>>> cl.monthdayscalendar(2020, 7)
# [
# [0, 0, 1, 2, 3, 4, 5], 
# [6, 7, 8, 9, 10, 11, 12], 
# [13, 14, 15, 16, 17, 18, 19], 
# [20, 21, 22, 23, 24, 25, 26], 
# [27, 28, 29, 30, 31, 0, 0]
# ]

cl.yeardatescalendar(year, width=3):

Метод cl.yeardatescalendar() возвращает дни за указанный год year, готовые к форматированию. Возвращаемое значение представляет собой список с количеством width месяцев, по умолчанию квартал (3 месяца).

Каждый месяц содержит список от 4 до 6 недель, а каждая неделя это список - от 1 до 7 дней. Дни - это объекты datetime.date.

>>> import calendar
>>> cl = calendar.Calendar()
>>> cl.yeardatescalendar(2020, width=3)
# [список кварталов, 
#   [список месяцев в квартале
#     [ список недель в месяце
#       [ список дней в неделе в виде
#        datetime.date(2019, 12, 30), 
#        datetime.date(2019, 12, 31), 
#        datetime.date(2020, 1, 1), 
#        datetime.date(2020, 1, 2), 
#        datetime.date(2020, 1, 3), 
#        datetime.date(2020, 1, 4), 
#        datetime.date(2020, 1, 5)],
#        ....  
#        данные за год
#     ]
#   ]
# ]

cl.yeardays2calendar(year, width=3):

Метод cl.yeardays2calendar() возвращает дни за указанный год year, готовые к форматированию аналогично cl.yeardatescalendar().

Записи в списках недели представляют собой кортежи номеров дня и номера дня недели. Номера дней за пределами этого месяца равны нулю.

>>> import calendar
>>> cl = calendar.Calendar()
>>> cl.yeardays2calendar(2020, width=3)
# [список кварталов, 
#   [список месяцев в квартале
#     [ список недель в месяце
#       [ список дней в неделе в виде
#        (0, 0), (0, 1), (1, 2), (2, 3), (3, 4), (4, 5), (5, 6)
#        ],
#        ....  
#        данные за год
#     ]
#   ]
# ]

cl.yeardayscalendar(year, width=3):

Метод cl.yeardayscalendar() возвращает данные за указанный год year, готовые к форматированию (аналогично `cl.yeardatescalendar()). Записи в списках недель - это номера дней. Числа дней за пределами этого месяца равны нулю.

>>> import calendar
>>> cl = calendar.Calendar()
>>> cl.yeardayscalendar(2020, width=3)
# [список кварталов, 
#   [список месяцев в квартале
#     [ список недель в месяце
#       [ список дней в неделе в виде
#        0, 0, 1, 2, 3, 4, 5
#       ],
#        ....  
#        данные за год
#     ]
#   ]
# ]