Найти в Дзене
programmer's notes (python and more)

Программирование ня языке python. Стандартный модуль calendar

Доброго времени суток, читатели, зрители моего канала programmer's notes. Не забывайте подписываться и писать свои комментарии к моим статьям и видео.

Библиотека calendar в python для работы с календарями и датами

Ну с датами мы уже работали

Но есть ещё интересный стандартный модуль calendar. Удобен, когда работаешь со многими датами.

Начнем с замечательной возможности вывода календаря в текстовом варианте

#!/usr/bin/python3
import calendar
calendar.prmonth(2024, 7)

или

#!/usr/bin/python3
from calendar import TextCalendar
cal = TextCalendar()
cal.prmonth(2024, 7)

Результат выполнения

Календарь в текстовом варианте
Календарь в текстовом варианте

Можно вывести в формате html

#!/usr/bin/python3
from calendar import HTMLCalendar
cal = HTMLCalendar()
print(cal.formatmonth(2024, 7))

Выполним, перенаправив в 1.html

./pr.py > 1.html

Календарь в html формате
Календарь в html формате

На самом деле календарь по умолчанию строится с предположением, что неделя начинается с понедельника (индекс 0). Но можно в качестве первого дня использовать и любой другой день, например

cal = TextCalendar(6)

и мы устанавливаем, что первым днём недели является воскресение.

Библиотека содержит много полезных методов, например

calendar.isleap(year)

определяет, високосный год или нет.

calendar.monthcalendar(2024, 7)

Возвращает матрицу

[[1, 2, 3, 4, 5, 6, 7],
[8, 9, 10, 11, 12, 13, 14],
[15, 16, 17, 18, 19, 20, 21],
[22, 23, 24, 25, 26, 27, 28],
[29, 30, 31, 0, 0, 0, 0]]

Каждая строка матрицы - неделя указанного месяцы. Дни, не входящие в месяц, отмечаются нулями.

Можно получить разные итераторы со списками дат (класс calendar.Calendar), например

#!/usr/bin/python3
import calendar
cal = calendar.Calendar()
dt = cal.itermonthdays4(2024, 7)
# понедельник или вторник
[print(str(list(i)[2]) + '-' + str(list(i)[1]) + '-' + str(list(i)[0])) \
for i in dt if list(i)[3] == 0 or list(i)[3] == 1]

Программа выводит даты соответствующие понедельникам и вторникам июля месяца 2024 года. Результата выполнения

1-7-2024
2-7-2024
8-7-2024
9-7-2024
15-7-2024
16-7-2024
22-7-2024
23-7-2024
29-7-2024
30-7-2024

Для локализации названий, например, для русского языка, используется

calendar.LocaleTextCalendar()

например

#!/usr/bin/python3
import calendar
cl = calendar.LocaleTextCalendar(0, locale='ru_RU.UTF-8')
cl.prmonth(2024, 7)

Результат выполнения

Келендарь на русском
Келендарь на русском

Ну, пока всё!

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

Я календарь перевернул и снова третье сентября
Я календарь перевернул и снова третье сентября