Модуль Calendar в Python имеет класс календаря, который позволяет выполнять вычисления для различных задач на основе даты, месяца и года. Кроме того, классы TextCalendar и HTMLCalendar в Python позволяют редактировать календарь и использовать его в соответствии с вашими требованиями.
Давайте посмотрим, что мы можем сделать с календарем Python.
Шаг 1) Запустите код.
- Строка кода # 1: Мы начинаем с «календаря импорта», который будет импортировать все классы этого модуля.
- Строка кода # 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 — го марта и любые дней после этого до 1 — го апреля. Эти дни будут засчитываться как ноль, и в выходных данных вы увидите эти нули, и то же самое применимо к концу месяца.
- Таким образом, кроме даты 1-30 все даты из предыдущего, а также после месяца будут отображаться в выходных данных как нули.
Шаг 4) Вы можете получить данные из локальной системы, например, месяцы или дни недели и т. Д.
- Вывод здесь показывает, что мы распечатали название месяца из локальной системы. Кроме того, вы также можете получить название дня недели, как показано ниже
-
Выходные данные будут зависеть от локальной системы. Предположим, что если ваша локальная система находится в некоторых других странах, она выдаст выходные данные в соответствии с локальными настройками этой страны. Здесь у нас есть месяцы, поэтому не будет никакой разницы, но если это будет неделя или день, она, безусловно, будет другой.
Шаг 5) Вы можете получить список определенного дня на целый год. Например, в каждый первый понедельник недели есть день аудита. Вы хотите знать дату первого понедельника для каждого месяца. Вы можете использовать этот код
- mycal = calendar.monthcalendar (2025, месяц) создаст календарь на месяц
- Установите переменные week1 и Week2 для первой и второй недели календаря
- Проверьте, содержит ли неделя 1 понедельник, установите день аудита
- В противном случае установите день аудита как первый понедельник на неделе 2
- Выходные данные показывают дату первого понедельника, который выпадает на этот месяц.
- Длина этого объекта Cal будет определенной длины в зависимости от того, сколько недель в этом месяце. В нашем случае это будет один или два, так как первый понедельник недели будет в первую неделю чаще всего, но если нет, то рассмотрим вторую неделю. Давайте посмотрим подробно, почему мы также рассматриваем вторую неделю.
- Здесь мы используем постоянный календарь понедельник, объект календаря дает вам константы, которые представляют воскресенье, понедельник, вторник и так далее, и так далее. Мы видели это ранее. Таким образом, если на первой неделе день, представленный константой Monday, не равен 0, помните, что нули означают дни, принадлежащие другому месяцу. Итак, в этом случае, если он равен нулю, это будет понедельник, который относится к предыдущему месяцу. Но если первый понедельник не равен 0, это означает, что мой день аудита будет в первой неделе. В противном случае, если это 0, тогда первый понедельник не в первой неделе месяца, он должен быть во второй.
- Итак, тогда я говорю «хорошо», установите мою переменную дня аудита равной понедельнику, представленному на второй неделе. Итак, день аудита вернется с тем, какой день будет для первой или второй недели.
Вот полный код
Пример Python 2
import calendar # Create a plain text calendar c = calendar.TextCalendar(calendar.THURSDAY) str = c.formatmonth(2025, 1, 0, 0) print str # Create an HTML formatted calendar hc = calendar.HTMLCalendar(calendar.THURSDAY) str = hc.formatmonth(2025, 1) print str # loop over the days of a month # zeroes indicate that the day of the week is in a next month or overlapping month for i in c.itermonthdays(2025, 4): print i # The calendar can give info based on local such a names of days and months (full and abbreviated forms) for name in calendar.month_name: print name for day in calendar.day_name: print day # calculate days based on a rule: For instance an audit day on the second Monday of every month # Figure out what days that would be for each month, we can use the script as shown here for month in range(1, 13): # It retrieves a list of weeks that represent the month mycal = calendar.monthcalendar(2025, month) # The first MONDAY has to be within the first two weeks week1 = mycal[0] week2 = mycal[1] if week1[calendar.MONDAY] != 0: auditday = week1[calendar.MONDAY] else: # if the first MONDAY isn't in the first week, it must be in the second week auditday = week2[calendar.MONDAY] print "%10s %2d" % (calendar.month_name[month], auditday)
Пример Python 3
import calendar # Create a plain text calendar c = calendar.TextCalendar(calendar.THURSDAY) str = c.formatmonth(2025, 1, 0, 0) print(str) # Create an HTML formatted calendar hc = calendar.HTMLCalendar(calendar.THURSDAY) str = hc.formatmonth(2025, 1) print(str) # loop over the days of a month # zeroes indicate that the day of the week is in a next month or overlapping month for i in c.itermonthdays(2025, 4): print(i) # The calendar can give info based on local such a names of days and months (full and abbreviated forms) for name in calendar.month_name: print(name) for day in calendar.day_name: print(day) # calculate days based on a rule: For instance an audit day on the second Monday of every month # Figure out what days that would be for each month, we can use the script as shown here for month in range(1, 13): # It retrieves a list of weeks that represent the month mycal = calendar.monthcalendar(2025, month) # The first MONDAY has to be within the first two weeks week1 = mycal[0] week2 = mycal[1] if week1[calendar.MONDAY] != 0: auditday = week1[calendar.MONDAY] else: # if the first MONDAY isn't in the first week, it must be in the second week auditday = week2[calendar.MONDAY] print("%10s %2d" % (calendar.month_name[month], auditday))
Резюме:
- В Python вы можете отформатировать календарь так, как вы хотите, так как вы можете изменить день месяца, чтобы начать
- Распечатать календарь в формате HTML
- Получить данные из локальной системы, например, месяцы или будни
- Получить список определенного дня на целый год