Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Industrial programming >> Python

Модуль calendar в Python: экспертное руководство с примерами кода

Встроенный модуль calendar в Python предлагает мощные инструменты для работы с датами, месяцами и годами. Используя классы вроде TextCalendar и HTMLCalendar, разработчики могут создавать печатаемые или веб-ориентированные календари, итерироваться по дням и даже вычислять пользовательские правила планирования.

Ниже — пошаговый обзор самых частых сценариев, с готовыми к запуску сниппетами для Python 2 и Python 3.

Шаг 1 — Генерация текстового календаря

Запустите следующий скрипт, чтобы увидеть обычный текстовый календарь для января 2025 года, с началом недели в четверг:

Модуль calendar в Python: экспертное руководство с примерами кода

Смените начальный день на воскресенье, чтобы проверить гибкость:

Модуль calendar в Python: экспертное руководство с примерами кода

Шаг 2 — Рендеринг HTML-календаря

Для веб-приложений HTMLCalendar может сгенерировать полную HTML-таблицу, которую можно стилизовать через CSS:

Модуль calendar в Python: экспертное руководство с примерами кода

Шаг 3 — Итерация по дням месяца

Метод itermonthdays выдаёт все дни месяца, включая нули-заполнители для дней, принадлежащих соседним месяцам. Это полезно для выравнивания календарей:

Модуль calendar в Python: экспертное руководство с примерами кода

Шаг 4 — Получение локализованных имён

Python автоматически учитывает системную локаль для имён месяцев и дней недели. Ниже — пример вывода при печати calendar.month_name и calendar.day_name:

Модуль calendar в Python: экспертное руководство с примерами кода

Настройки локали تختلف по машинам, поэтому результаты могут отличаться для пользователей в других странах.

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

Ниже — лаконичный скрипт, находящий первый понедельник каждого месяца в 2025 году:

Модуль calendar в Python: экспертное руководство с примерами кода

Логика использует calendar.monthcalendar для получения матрицы недель, затем проверяет первые две недели на ненулевое значение понедельника.

Пример для Python 2

import calendar
# Создать простой текстовый календарь
c = calendar.TextCalendar(calendar.THURSDAY)
text = c.formatmonth(2025, 1)
print text
# Создать HTML-календарь
hc = calendar.HTMLCalendar(calendar.THURSDAY)
html = hc.formatmonth(2025, 1)
print html
# Перебор дней месяца
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)
    week1 = mycal[0]
    week2 = mycal[1]
    if week1[calendar.MONDAY] != 0:
        auditday = week1[calendar.MONDAY]
    else:
        auditday = week2[calendar.MONDAY]
    print "%10s %2d" % (calendar.month_name[month], auditday)

Пример для Python 3

import calendar
# Создать простой текстовый календарь
c = calendar.TextCalendar(calendar.THURSDAY)
text = c.formatmonth(2025, 1)
print(text)
# Создать HTML-календарь
hc = calendar.HTMLCalendar(calendar.THURSDAY)
html = hc.formatmonth(2025, 1)
print(html)
# Перебор дней месяца
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)
    week1 = mycal[0]
    week2 = mycal[1]
    if week1[calendar.MONDAY] != 0:
        auditday = week1[calendar.MONDAY]
    else:
        auditday = week2[calendar.MONDAY]
    print("%10s %2d" % (calendar.month_name[month], auditday))

Вывод

Python

  1. Абстрактные классы в C#: практическое руководство с примерами кода
  2. Мастерство метода strip() в Python: подробное руководство и практические примеры
  3. Мастерство метода str.count() в Python: как подсчитывать символы и подстроки с примерами
  4. Функция round() в Python: подробное объяснение с практическими примерами
  5. Освоение функции map() в Python: синтаксис, примеры и лучшие практики
  6. Python timeit(): измерение времени выполнения с практическими примерами
  7. Освоение yield в Python: генератор против return — практическое руководство
  8. Counter в collections Python: эффективное подсчёт, обновление и арифметические операции
  9. Python list.count(): экспертное руководство с практическими примерами
  10. Python list.index(): как находить позиции элементов — практические примеры