tgoop.com/yeahub_python_backend/522
Create:
Last Update:
Last Update:
Календарь прямо в консоли Python
Если вы пишете утилиты, вам может понадобиться быстрая и удобная работа с датами и временем. В Python есть встроенный и мощный модуль calendarcalendar входит в стандартную библиотеку Python.
from calendar import * # Импортируем все функции для удобства (но лучше так не делать)
Функция
calendar() — это мощный инструмент для форматированного вывода. Вы можете настроить ширину ячеек, отступы и даже количество месяцев в строке. Хорошо подходит для быстрого CLI-отчета или вывода в календаря в логи.
year = int(input("Введите год для календаря: "))
# Вывод календаря целого года с продвинутым форматированием
print(calendar(
year,
2, # Ширина каждой ячейки дня
1, # Количество строк между неделями
8, # Горизонтальный отступ между месяцами
2 # Количество месяцев в одной строке (вместо стандартных трех)
))
В результате получите отформатированный календарь прямо в терминале (попробуйте)
TextCalendar Для более тонкого контроля и работы с отдельными датами лучше использовать класс
TextCalendar. Он позволяет задать, например, с какого дня недели начинается вывод.
# Создание объекта с началом недели в Понедельник (0 = Понедельник)
cal = TextCalendar(firstweekday=0)
month_num = 4 # Пример: Ноябрь
print(f"--- Ноябрь {year} ---")
# Отформатированный вывод конкретного месяца
print(cal.formatmonth(year, month_num))
Для программной обработки дат вам нужны не просто строки, а списки данных. Метод
monthdayscalendar() возвращает недели выбранного месяца в виде списков, где 0 означает дни, не входящие в этот месяц
# Получение недель в виде списков:
# [Понедельник, Вторник, ... Воскресенье]
weeks = cal.monthdayscalendar(year, month_num)
print("\n--- Недели (списки чисел) ---")
for week in weeks:
# Здесь можно легко проверить, является ли день выходным или праздником
print("Неделя:", week)
Модуль
calendar позволяет не только вывести красивый календарь в консоль, но и получить структурированные данные для дальнейшей обработки в ваших скриптах или APIПробовали ли вы что-нибудь такое?
Делитесь опытом в комментариях
