Рубрики
Без рубрики

Глубокая работа с календарем Python

В модулях python icalendar есть много классов, таких как Календарь, Текстовый Календарь, HTML-календарь для печати и форматирования календаря в python.

Автор оригинала: 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)
'\n\n\n\n\n\n\n\n
June 2019
MonTueWedThuFriSatSun
     12
3456789
10111213141516
17181920212223
24252627282930
\n'

Некоторые распространенные программы, использующие модуль календаря

Печать календаря на определенный год

Используя класс calendar модуля calendar, мы можем распечатать календарь любого года.

import calendar(input()) 
print(calendar.calendar(year))
2019
календарь python
календарь python

Для печати определенного месяца года с помощью модуля календаря 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()
календарь python
календарь python

Для печати календаря для конкретной локали-

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 есть еще много функций. Мы дали вам краткое представление о классах и о том, как можно сделать основные вещи. Вы можете попробовать много разных вещей самостоятельно, чтобы лучше понять модуль.

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

Счастливого кодирования!