Python Учебное пособие по КАЛЕНДАРЮ с примером

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

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

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

КАЛЕНДАРЬ в Python

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

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

КАЛЕНДАРЬ в Python

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

КАЛЕНДАРЬ в Python

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

КАЛЕНДАРЬ в Python

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

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

КАЛЕНДАРЬ в Python

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

КАЛЕНДАРЬ в Python

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

КАЛЕНДАРЬ в Python

  • mycal = Calendar.monthcalendar(2025,month) создаст календарь на месяц
  • Установите переменные неделя1 и неделя2 в первую и вторую неделю календаря.
  • Проверьте, содержит ли первая неделя Monday, установить день аудита
  • В противном случае установите день аудита как первый. Monday на 2 неделе
  • Вывод показывает дату первого Monday это выпадает на этот месяц.
  • Длина этого объекта Cal будет определенной в зависимости от количества недель в месяце. В нашем случае сначала их будет один или два. Monday недели чаще всего приходится на первую неделю, но если нет, то рассмотрите вторую неделю. Давайте посмотрим подробно, почему мы также рассматриваем вторую неделю.
  • Здесь мы используем константу календаря Mondayобъект календаря предоставляет константы, обозначающие воскресенье, Monday, вторник и так далее и тому подобное. Мы видели это раньше. Итак, если на первой неделе день, представленный Monday константа не равна 0, помните, что нули означают дни, принадлежащие другому месяцу. Итак, в данном случае, если оно равно нулю, это будет Monday который принадлежит предыдущему месяцу. Но если первый Monday не равно 0, это означает, что мой день аудита будет в пределах недели 0. В противном случае, если это XNUMX, то первый Monday это не первая неделя месяца, это должно быть во вторую.
  • Итак, я говорю: «ОК, установите переменную дня аудита как Monday представлена ​​второй неделей. Итак, день аудита вернется с любым днем ​​первой или второй недели.

Вот полный код

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))

Резюме

  • In Python, вы можете отформатировать календарь так, как вам хочется, так как вы можете изменить день начала месяца.
  • Распечатайте календарь в формате HTML.
  • Получите данные из локальной системы, например, месяцы или дни недели.
  • Получить список определенного дня за весь год