Автор оригинала: Team Python Pool.
Работа с данными даты и времени является обычной и необходимой для программистов, особенно для тех, кто занимается веб-разработкой или разработкой Android. Так много раз вы, должно быть, видели календари на веб-сайте или в приложении для Android, например, для выбора даты вашего рождения. В python все это возможно с помощью модуля календаря python. Если вы работали в Linux, то должны быть знакомы с командой ‘cal’.
Модуль календаря Python имеет класс календаря, с помощью которого мы можем выполнять различные вычисления на основе даты, месяца или года. Кроме того, у нас также есть класс HTMLCalendar и Text Calendar, который позволяет нам редактировать календарь и использовать его в соответствии с нашими требованиями.
Синтаксис календаря Python
Календарь-это встроенный модуль, поэтому для его использования нам просто нужно его импортировать. Для импорта используйте – “импорт календаря”. Многие операции можно выполнить с помощью модуля календаря, который мы будем изучать один за другим.
Различные классы модуля календаря python
Календарь (модуль календаря python)
Класс Calendar модуля Calendar создает объект, который может быть использован для форматирования. Он имеет только один параметр, firstweekday, значение которого по умолчанию равно 0 (“ПОНЕДЕЛЬНИК”). Для ВОСКРЕСЕНЬЯ установите значение 6.
iterweekdays() | Он возвращает день недели, который в данный момент установлен как первый день. Для понедельника это “0”. |
itermonthdates(год, месяц) | Он возвращает итератор, который показывает все дни месяца и некоторые дни предыдущего месяца и следующего месяца, необходимые для завершения недели. |
itermonthdays2(год, месяц) | Он возвращает итератор, который выдает кортеж в качестве вывода, содержащий дни недели от 0 до 6 с днем месяца.Пример вывода- (16, 3). |
itermonthdays3(год, месяц) | Это обновленная версия iter month 2 и возвращает кортеж, содержащий (год, месяц, день месяца).Пример выхода- (2020, 7, 29) |
itermonthdays4(год, месяц) | Он возвращает итератор, содержащий кортеж в заданной форме- (год, месяц, день месяца, день недели).Например- (2020, 7, 21, 1) |
monthdays2calendar(год, месяц) | Он возвращает список,содержащий кортежи в форме (день месяца, день недели) для данного месяца года. |
monthdayscalendar(год, месяц) | Он возвращает список, содержащий дни месяца и несколько дней предыдущего месяца и следующего месяца, завершающих неделю. |
yeardays2calendar(год) | Вывод осуществляется в виде списка, содержащего кортеж -(день месяца, день недели) за полный указанный год. |
Текстовый календарь(firstweekday):
Возвращает простой календарь на весь год или на определенный месяц.
formatmonth(theyear, themonth) | Возвращает календарь на данный год и месяц. |
формат year(год) | Он возвращает календарь на весь год. |
HTML Календарь( первый день недели)
Он печатает календарь месяца в формате HTML.
Программа-
import calendar .HTMLCalendar(0) cal.formatmonth(2019,6)
'
June 2019 | ||||||
---|---|---|---|---|---|---|
Mon | Tue | Wed | Thu | Fri | Sat | Sun |
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 |
Некоторые распространенные программы, использующие модуль календаря
Печать календаря на определенный год
Используя класс calendar модуля calendar, мы можем распечатать календарь любого года.
import calendar(input()) print(calendar.calendar(year))
2019
Для печати определенного месяца года с помощью модуля календаря python
2020 2 February 2020 Mo Tu We Th Fr Sa Su 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
В приведенных выше двух выходах вы, должно быть, заметили, что календарь начинается с понедельника. Если мы хотим изменить его на любой другой месяц, предположим, воскресенье, давайте посмотрим, как мы можем это сделать.
# Using the TextCalendar class #Storing the TextCalendar object with starting day as Sunday in 'c' variable .TextCalendar(calendar.SUNDAY) # Calendar for year 2020.formatyear(2020) print(cal)
Чтобы напечатать все месяцы года-
for i in calendar.month_name: print(i)
January February March April May June July August September October November December
Печать (год, месяц, день месяца, день недели)
import calendar.TextCalendar(calendar.SUNDAY) for i in c.itermonthdays4(2020,7): print(i)
(2020, 6, 29, 0) (2020, 6, 30, 1) (2020, 7, 1, 2) (2020, 7, 2, 3) (2020, 7, 3, 4) (2020, 7, 4, 5) (2020, 7, 5, 6) (2020, 7, 6, 0) (2020, 7, 7, 1) (2020, 7, 8, 2) (2020, 7, 9, 3) (2020, 7, 10, 4) (2020, 7, 11, 5) (2020, 7, 12, 6) (2020, 7, 13, 0) (2020, 7, 14, 1) (2020, 7, 15, 2) (2020, 7, 16, 3) (2020, 7, 17, 4) (2020, 7, 18, 5) (2020, 7, 19, 6) (2020, 7, 20, 0) (2020, 7, 21, 1) (2020, 7, 22, 2) (2020, 7, 23, 3) (2020, 7, 24, 4) (2020, 7, 25, 5) (2020, 7, 26, 6) (2020, 7, 27, 0) (2020, 7, 28, 1) (2020, 7, 29, 2) (2020, 7, 30, 3) (2020, 7, 31, 4) (2020, 8, 1, 5) (2020, 8, 2, 6)
Примечание - Он печатает (год, месяц, день месяца, день недели) за месяц и несколько дней предыдущего месяца и следующего месяца, чтобы завершить недели.
Чтобы проверить, является ли год високосным или нет, используйте модуль календаря python
import calendar def isleapyear(year): return calendar.isleap(year) print(isleapyear(2012)) print(isleapyear(2021))
True False
Чтобы узнать, сколько лет високосные годы в диапазоне
import calendar calendar.leapdays(2019,2093)
Выход-
18
Календарь Без использования модуля Календаря Python
Когда я делал эту программу для вас, я воспользовался помощью этого href="https://cs.uwaterloo.ca/~alopez-o/math-faq/mathtext/node39.html#:~:text=Take%20the%20last%20two%20digits,OND%20144%20025%20036%20146"> веб-сайт, чтобы решить, какой день является первым днем месяца, держа все под контролем, например, является ли год href="https://en.wikipedia.org/wiki/Leap_year">високосный год или нет, количество дней в каждом месяце и т. Д. href="https://cs.uwaterloo.ca/~alopez-o/math-faq/mathtext/node39.html#:~:text=Take%20the%20last%20two%20digits,OND%20144%20025%20036%20146"> веб-сайт, чтобы решить, какой день является первым днем месяца, держа все под контролем, например, является ли год href="https://en.wikipedia.org/wiki/Leap_year">високосный год или нет, количество дней в каждом месяце и т. Д. href="https://en.wikipedia.org/wiki/Leap_year">високосный год или нет, количество дней в каждом месяце и т. Д.
def firstday(year,month): # Refer to the website above for better understanding of the program dict1={1:1,2:4,3:4,4:0,5:2,6:5,7:0,8:3,9:6,10:1,11:4,12:6} (str(year)[len(str(year))-2:]) last=(last1//4)+1 +dict1[month] if isleap(year) and or) : -1 else: if and year<2000: elif and year<3000: elif and year<1800: elif and: if: return 0 if: return 1 if: return 2 if: return 3 if: return 4 if: return 5 if: return 6
def isleap(year): if (year % 4): if (year % 100): if (year % 400): return True else: return False else: return True else: return False
def print_calendar(year,month): months={1:"January",2:"Feburary",3:"March",4:"April",5:"May",6:"June",7:"July",8:"August",9:"September",10:"October",11:"November",12:"December"} print(year," ",months[month],"\n") days_31=[1,3,5,7,8,10,12] days_30=[4,6,9,11] print("Su Mo Tu We Th Fr Sa") (year,month) if month in days_31: elif (month in days_30): else: if: else: if: print(") elif: print(" "*(day*4-1),'01') for i in range(2,total_days+1): if i<10: +str(i) else: if: ) elif: print(") elif: print(") elif: print(") elif: print(") elif day % 7: print(") elif day: print(" ",i1) print_calendar(2020,2)
2020 Feburary Su Mo Tu We Th Fr Sa 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
Примечание - Этот календарь может печатать календарь только на годы между 1700 и 2100 годами
Печать праздников на определенный год
Для этого сначала вам нужно установить модуль holidays с помощью pip install holidays.
import holidays for holiday in).items(): print(holiday)
(datetime.date(2020, 1, 14), 'Makar Sankranti / Pongal') (datetime.date(2020, 1, 26), 'Republic Day') (datetime.date(2020, 8, 15), 'Independence Day') (datetime.date(2020, 10, 2), 'Gandhi Jayanti') (datetime.date(2020, 5, 1), 'Labour Day') (datetime.date(2020, 12, 25), 'Christmas')
Календарь на Python с графическим интерфейсом
class Application(Frame): def __init__(self, master): Frame.__init__(self, master) self.grid() (input('\nEnter Year eg. 2020\n')) (input('\nEnter month number.\n')) self.create_widgets(year, month) def create_widgets(self, year, month): days = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'] #create labels for i in range(7): (self,[i]) ,) weekday,(year, month) for i in range(1, numDays + 1): (self,(i)) ,) weekday if weekday > 6: week ()(root) root.mainloop()
Для печати календаря для конкретной локали-
import calendar.LocaleTextCalendar(locale='en_IN') print(cal.formatmonth(2020, 9))
Выход-
September 2020 Mo Tu We Th Fr Sa Su 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
Должен Читать:
- Как преобразовать строку в нижний регистр в
- Как вычислить Квадратный корень
- Пользовательский ввод | Функция ввода () | Ввод с клавиатуры
- Лучшая книга для изучения Python
Вывод
В модуле python calendar есть еще много функций. Мы дали вам краткое представление о классах и о том, как можно сделать основные вещи. Вы можете попробовать много разных вещей самостоятельно, чтобы лучше понять модуль.
Попробуйте запустить программы на вашей стороне и дайте нам знать, если у вас есть какие-либо вопросы.
Счастливого кодирования!