От автора: модуль календаря в Python содержит класс календаря, который позволяет выполнять вычисления для различных задач на основе даты, месяца и года. Кроме того, классы Python TextCalendar и HTMLCalendar позволяют редактировать календарь и использовать его в соответствии с вашими потребностями.
Давайте рассмотрим, что мы можем сделать с Python Calendar.
Шаг 1) Запустите код.
Строка кода 1: Мы начинаем с «import calendar», который импортирует все классы этого модуля.
Строка кода 3: c = calendar.TextCalendar (calendar.SUNDAY) указывает интерпретатору создать текстовый календарь. Начало месяца будет воскресенье. В Python вы можете отформатировать календарь, так как вы можете изменить день, с которого начинать месяц.
Строка кода 4: str = c.formatmonth (2025,1) создает календарь на 2025 год, месяц 1 — январь
Строка кода 5: print str выводит результат.
Давайте изменим значение с воскресенья на четверг и проверим вывод.
Шаг 2) Вы также можете вывести Календарь в формате HTML, эта функция полезна для разработчиков, если они хотят внести какие-либо изменения во внешний вид календаря.
Шаг 3) Перебираем через цикл дни месяца с помощью c.itermonthday(2025,4), мы получим общее количество дней в этом месяце.
Когда вы выполните код, чтобы получить общее количество дней для определенного месяца, скажем, апреля, вы получите 30 дней, но вы также увидите несколько нулей вместе с этими днями в начале, а иногда и в конце.
Нули в выходных данных означают, что день недели находится в перекрывающемся месяце, что означает, что он не принадлежит этому месяцу.
Эти нули появляются в выводе, потому что в коде вы указали день (четверг), поэтому при вызове функции «c.itermonthdays» она начнет отсчет дней с четверга, и четверг может приходиться не на 1апреля, а на 28 или 29 марта, так что при выполнении кода она начнет отсчет дней с 28 марта. Дни с 28 марта до 1 апреля будут засчитываться как ноль, и в выходных данных вы увидите эти нули, и то же самое применимо к концу месяца.
Таким образом, кроме дат 1-30 все даты из предыдущего, а также последующего месяцев будут отображаться в выходных данных как нули.
Шаг 4) Вы можете получить данные из локальной системы, например, месяцы или дни недели и т. д.
Мы вывели название месяца из локальной системы. Кроме того, вы также можете получить название дня недели, как показано ниже
Выходные данные будут зависеть от локальной системы. Предположим, что ваша локальная система находится в других странах, она выдаст выходные данные в соответствии с локальными настройками страны. Здесь у нас месяцы, поэтому не будет никакой разницы, но если это будет неделя или день, они, безусловно, будут другими.
Шаг 5) Вы можете получить список для определенного дня недели на целый год. Например, каждый первый понедельник недели. Если вы хотите знать дату первого понедельника для каждого месяца, вы можете использовать этот код.
mycal = calendar.monthcalendar (2025, месяц) создаст календарь на месяц
Устанавливаем переменные week1 и week2 для первой и второй недели календаря
Проверяем, содержит ли неделя 1 понедельник, устанавливаем контрольный день
В противном случае устанавливаем контрольный день как первый понедельник на неделе 2
Выходные данные показывают дату первого понедельника, который выпадает на этот месяц.
Длина этого объекта Cal будет определенного размера в зависимости от того, сколько недель в этом месяце. В нашем случае это будет один или два, так как первый понедельник недели будет в первую неделю чаще всего, но если нет, то мы рассмотрим вторую неделю. Давайте рассмотрим подробно, почему мы также учитываем вторую неделю.
Здесь мы используем постоянную календаря Monday, объект календаря предоставляет константы, которые представляют Sunday, Monday, Tuesday и так далее. Мы рассмотрели это ранее. Итак, если на первой неделе день, представленный константой Monday, не равен 0, он принадлежит этому месяцу. Если он равен нулю, это будет понедельник, который относится к предыдущему месяцу. Но если первый понедельник не равен 0, это означает, что контрольный день будет в первой неделе. Иначе, если это 0, тогда первый понедельник не в первой неделе месяца, он должен быть во второй.
Контрольный день будет возвращен с тем, какой на какой неделе он будет.
Вот полный код
Пример Python 2
import calendar # Создаем обычный текстовый календарь c = calendar.TextCalendar(calendar.THURSDAY) str = c.formatmonth(2025, 1, 0, 0) print str # Создаем календарь в формате HTML hc = calendar.HTMLCalendar(calendar.THURSDAY) str = hc.formatmonth(2025, 1) print str # перебираем через цикл дни месяца # нули указывают, что дни принадлежат смежному месяцу for i in c.itermonthdays(2025, 4): print i # Календарь может выдавать информацию на основе локальных настроек, таких как название дней и месяцев (полных или сокращенных) for name in calendar.month_name: print name for day in calendar.day_name: print day # вычисляем день на основе правил: Например для каждого второго понедельника каждого месяца # Устанавливаем это для каждого месяца, мы можем использовать следующий скрипт for month in range(1, 13): # Он извлекает список недель, который представляет месяц mycal = calendar.monthcalendar(2025, month) # Первый MONDAY должен принадлежать первой или второй неделе week1 = mycal[1] week2 = mycal[2] if week1[calendar.MONDAY] != 0: auditday = week1[calendar.MONDAY] else: # если первый MONDAY не принадлежит первой неделе, он должен быть на второй неделе auditday = week2[calendar.MONDAY] print "%10s %2d" % (calendar.month_name[month], auditday)
Пример Python 3
import calendar # Создаем обычный текстовый календарь c = calendar.TextCalendar(calendar.THURSDAY) str = c.formatmonth(2025, 1, 0, 0) print(str) # Создаем календарь в формате HTML hc = calendar.HTMLCalendar(calendar.THURSDAY) str = hc.formatmonth(2025, 1) print(str) # перебираем через цикл дни месяца # нули указывают, что дни принадлежат смежному месяцу for i in c.itermonthdays(2025, 4): print(i) # Календарь может выдавать информацию на основе локальных настроек, таких как название дней и месяцев (полных или сокращенных) for name in calendar.month_name: print(name) for day in calendar.day_name: print(day) # вычисляем день на основе правил: Например для каждого второго понедельника каждого месяца # Устанавливаем это для каждого месяца, мы можем использовать следующий скрипт for month in range(1, 13): # Он извлекает список недель, который представляет месяц mycal = calendar.monthcalendar(2025, month) # Первый MONDAY должен принадлежать первой или второй неделе week1 = mycal[1] week2 = mycal[2] if week1[calendar.MONDAY] != 0: auditday = week1[calendar.MONDAY] else: # если первый MONDAY не принадлежит первой неделе, он должен быть на второй неделе auditday = week2[calendar.MONDAY] print("%10s %2d" % (calendar.month_name[month], auditday))
Резюме:
В Python вы можете отформатировать календарь так, как хотите, вы можете изменить начальный день месяца
Вывести календарь в формате HTML
Получить данные из локальной системы, например, месяцы или дни недели
Получить список определенного дня недели на целый год
Источник: https://www.guru99.com
Редакция: Команда webformyself.