Урок за КАЛЕНДАР на Python с пример

Anonim

Календарният модул в Python има клас календар, който позволява изчисленията за различни задачи въз основа на дата, месец и година. На всичкото отгоре класът TextCalendar и HTMLCalendar в Python ви позволява да редактирате календара и да го използвате според вашите изисквания.

Нека видим какво можем да направим с Python Calendar.

Стъпка 1) Стартирайте кода.

  • Кодов ред # 1: Започваме с „импортиране на календар“, който ще импортира всички класове на този модул.
  • Кодов ред # 3: c = календар.TextCalendar (календар.SUNDAY) казва на интерпретатора да създаде текстов календар. Началото на месеца ще бъде в неделя. В Python можете да форматирате календара, тъй като можете да промените деня от месеца, за да започнете
  • Кодов ред # 4: str = c.formatmonth (2025,1) Създаваме календар за 2025 година, месец 1 - януари
  • Код ред # 5: print str ще отпечата резултата.

Нека бързо променим стойността от неделя на четвъртък и проверим резултата

Стъпка 2) Можете също да разпечатате календара в HTML формат, тази функция е полезна за разработчика, ако иска да направи някакви промени във външния вид и усещането на календара

Стъпка 3) Цикли през дните на месеца, използвайки c.itermonthday (2025,4), той ще извлече общия брой дни за този месец.

  • Когато изпълните кода, за да получите общия брой дни за определен месец, кажете "април", тогава ще получите 30 дни в изхода, но също така ще видите някои нули заедно с тези дни в началото и понякога в края му .
  • Нулите в изхода означават, че денят от седмицата е в припокриващ се месец, което означава, че не принадлежи към този месец.
  • Тези нули се появява в продукцията, защото в кода си, че сте посочили ден (четвъртък), така че, когато се обадите функция "c.itermonthdays", той ще започне преброяване дни от четвъртък и вашата четвъртък не може да започне с дата 1 -ви април, че може да бъде 28 -ми или 29 -ти март, така че когато изпълните кода, той ще започне да брои дни от 28 -ми март и всички дни след това до 1- ви април. Тези дни ще бъдат отчетени като нула и в изхода ще видите тези нули и същото е приложимо за края на месеца.
  • Така че с изключение на дата 1-30 всички дати от предишния, както и след месеца ще се появят в резултата като нули.

Стъпка 4) Можете да извлечете данните от локалната система, като месеци или делнични дни и т.н.

  • Резултатът тук показва, че сме отпечатали името на месеците от локалната система. По същия начин можете да вземете и името на делничните дни, както е показано по-долу
  • Резултатът ще зависи от локалната система, да предположим, че ако вашата локална система е друга държава, тогава тя ще даде резултата според локалните настройки на тази държава. Тук имаме месеци, така че няма да има разлика, но ако е седмица или ден, със сигурност ще се различава.

Стъпка 5) Можете да вземете списъка на конкретния ден за цяла година. Например, има ден на одит всеки първи понеделник от седмицата. Искате да знаете датата на първия понеделник за всеки месец. Можете да използвате този код

  • mycal = calendar.monthcalendar (2025, месец) ще създаде календар за месеца
  • Задайте променливи week1 и week2 на първата и втората седмица на календара
  • Проверете дали седмица 1 съдържа понеделник, задайте ден за одит
  • Освен това определете деня на одита като първия понеделник от седмица 2
  • Резултатът показва датата за първия понеделник, която пада през този месец.
  • Дължината на този обект Cal ще бъде определена дължина, в зависимост от това колко седмици има в месеца. В нашия случай това ще бъде един или два, тъй като първият понеделник от седмицата най-често ще бъде през първата седмица, но ако не, тогава помислете за втората седмица. Нека видим подробно защо разглеждаме и втората седмица.
  • Тук използваме константата на календара в понеделник, обектът на календара ви дава константи, които представляват неделя, понеделник, вторник и т.н. Виждали сме ги и преди. Така че, ако през първата седмица денят, представен от константата от понеделник, не е равен на 0, не забравяйте, че нули означава дни, които принадлежат на друг месец. Така че, в този случай, ако е нула, това ще бъде понеделник, който принадлежи на предходния месец. Но ако първият понеделник не е равен на 0, това означава, че денят на моя одит ще бъде в рамките на седмицата. В противен случай, ако това е 0, тогава първият понеделник не е през първата седмица на месеца, трябва да е през втория.
  • И така, тогава казвам добре, задайте променливата на деня на одита да бъде понеделник, представен от седмица втора. И така, денят на одита ще се върне с какъвто и да е денят за първата или втората седмица.

Ето пълния код

Пример за Python 2

импортиране на календар# Създайте календар с обикновен текстc = календар.TextCalendar (календар.ЧЕТВЪРТ)str = c.formatmonth (2025, 1, 0, 0)печат str# Създайте HTML форматиран календарhc = календар.HTMLCalendar (календар.ЧЕТВЪРТЪК)str = hc.formatmonth (2025, 1)печат str# цикъл през дните на месеца# нули показват, че денят от седмицата е в следващ месец или припокриващ се месецза i в c.itermonthdays (2025, 4):печат i# Календарът може да дава информация въз основа на местни такива имена на дни и месеци (пълни и съкратени форми)за име в календара.месец_име:име за печатза ден в календара.day_name:ден за печат# изчисляване на дни въз основа на правило: Например ден на одита във втория понеделник на всеки месец# Разберете кои дни биха били за всеки месец, можем да използваме скрипта, както е показано тукза месец в диапазона (1, 13):# Извлича списък със седмици, които представляват месецаmycal = calendar.monthcalendar (2025, месец)# Първият ПОНЕДЕЛНИК трябва да бъде в рамките на първите две седмициweek1 = mycal [0]week2 = mycal [1]ако седмица1 [календар.ПОНЕДЕЛНИК]! = 0:auditday = седмица1 [календар.ПОНЕДЕЛНИК]друго:# ако първият ПОНЕДЕЛНИК не е през първата седмица, трябва да е през втората седмицаauditday = седмица2 [календар.ПОНЕДЕЛНИК]отпечатайте "% 10s% 2d"% (календар.месец_име [месец], ден на одит)

Пример за Python 3

импортиране на календар# Създайте календар с обикновен текстc = календар.TextCalendar (календар.ЧЕТВЪРТ)str = c.formatmonth (2025, 1, 0, 0)печат (str)# Създайте HTML форматиран календарhc = календар.HTMLCalendar (календар.ЧЕТВЪРТЪК)str = hc.formatmonth (2025, 1)печат (str)# цикъл през дните на месеца# нули показват, че денят от седмицата е в следващ месец или припокриващ се месецза i в c.itermonthdays (2025, 4):печат (i)# Календарът може да дава информация въз основа на местни такива имена на дни и месеци (пълни и съкратени форми)за име в календара.месец_име:печат (име)за ден в календара.day_name:печат (ден)# изчисляване на дни въз основа на правило: Например ден на одита във втория понеделник на всеки месец# Разберете кои дни биха били за всеки месец, можем да използваме скрипта, както е показано тукза месец в диапазона (1, 13):# Извлича списък със седмици, които представляват месецаmycal = calendar.monthcalendar (2025, месец)# Първият ПОНЕДЕЛНИК трябва да бъде в рамките на първите две седмициweek1 = mycal [0]week2 = mycal [1]ако седмица1 [календар.ПОНЕДЕЛНИК]! = 0:auditday = седмица1 [календар.ПОНЕДЕЛНИК]друго:# ако първият ПОНЕДЕЛНИК не е през първата седмица, трябва да е през втората седмицаauditday = седмица2 [календар.ПОНЕДЕЛНИК]print ("% 10s% 2d"% (календар.месец_име [месец], ден на одита))

Резюме:

  • В Python можете да форматирате календара така, както искате, тъй като можете да промените деня на месеца, за да започне
  • Разпечатайте календара в HTML формат
  • Вземете данните от локалната система, като месеци или делнични дни
  • Вземете списъка на конкретния ден за цяла година