Учебники

17) Календарь на Python

Модуль Calendar в Python имеет класс календаря, который позволяет выполнять вычисления для различных задач на основе даты, месяца и года. Кроме того, классы TextCalendar и HTMLCalendar в Python позволяют редактировать календарь и использовать его в соответствии с вашими требованиями.

Давайте посмотрим, что мы можем сделать с календарем Python.

Шаг 1) Запустите код.

Учебник по Python CALENDAR с примером

  • Строка кода # 1: Мы начинаем с «календаря импорта», который будет импортировать все классы этого модуля.
  • Строка кода # 3: c = calendar.TextCalendar (calendar.SUNDAY) говорит переводчику создать текстовый календарь. Начало месяца будет воскресенье. В Python вы можете отформатировать календарь, так как вы можете изменить день месяца, чтобы начать с
  • Строка кода # 4: str = c.formatmonth (2025,1) Мы создаем календарь на 2025 год, месяц 1 — январь
  • Строка кода # 5: print str напечатает вывод.

Давайте быстро изменим значение с воскресенья на четверг и проверим вывод

Учебник по Python CALENDAR с примером

Шаг 2) Вы также можете распечатать Календарь в формате HTML, эта функция полезна для разработчиков, если они хотят внести какие-либо изменения в внешний вид календаря

Учебник по Python CALENDAR с примером

Шаг 3) Циклы по дням месяца с помощью c.itermonthday (2025,4), он будет получать общее количество дней в этом месяце.

Учебник по Python CALENDAR с примером

  • Когда вы выполните код, чтобы получить общее количество дней для определенного месяца, скажем «апрель», вы получите 30 дней на выходе, но вы также увидите некоторые нули вместе с этими днями в начале, а иногда и в конце. ,
  • Нули в выходных данных означают, что день недели находится в перекрывающемся месяце, что означает, что он не принадлежит этому месяцу.
  • Эти нули появляются на выходе , потому что в вашем коде вы упоминали день (четверг), поэтому при вызове функции «c.itermonthdays», он начинает отсчет дни с четверга и ваш четверга не может начинаться с датой 1 — го апреля он может быть 28 — го или 29 — го марта, так что при выполнении кода он начнет отсчет дни с 28 — го марта и любые дней после этого до 1 — го апреля. Эти дни будут засчитываться как ноль, и в выходных данных вы увидите эти нули, и то же самое применимо к концу месяца.
  • Таким образом, кроме даты 1-30 все даты из предыдущего, а также после месяца будут отображаться в выходных данных как нули.

Шаг 4) Вы можете получить данные из локальной системы, например, месяцы или дни недели и т. Д.

Учебник по Python CALENDAR с примером

  • Вывод здесь показывает, что мы распечатали название месяца из локальной системы. Кроме того, вы также можете получить название дня недели, как показано ниже
  • Выходные данные будут зависеть от локальной системы. Предположим, что если ваша локальная система находится в некоторых других странах, она выдаст выходные данные в соответствии с локальными настройками этой страны. Здесь у нас есть месяцы, поэтому не будет никакой разницы, но если это будет неделя или день, она, безусловно, будет другой.

Учебник по Python CALENDAR с примером

Шаг 5) Вы можете получить список определенного дня на целый год. Например, в каждый первый понедельник недели есть день аудита. Вы хотите знать дату первого понедельника для каждого месяца. Вы можете использовать этот код

Учебник по Python CALENDAR с примером

  • 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
  • Получить данные из локальной системы, например, месяцы или будни
  • Получить список определенного дня на целый год