Доброго времени суток, читатели, зрители моего канала 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
На самом деле календарь по умолчанию строится с предположением, что неделя начинается с понедельника (индекс 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)
Результат выполнения
Ну, пока всё!
Пишите свои предложения и замечания, и занимайтесь программированием, а также проектированием баз данных, хотя бы для поддержания уровня интеллекта.