Python – importujemy calendar (kalendarz) i

Klasa kalendarza w Pythonie to bardzo przydatna rzecz, posiadająca przydatne funkcje związane właśnie z kalendarzem.

Jak podaje oficjalna dokumentacja Pythona ze strony docs.python.org w wersji 3 (tutaj dokłądnie 3.9.7)Moduł ten pozwala na wyprowadzanie kalendarzy, takich jak program Unix cal , i zapewnia dodatkowe przydatne funkcje związane z kalendarzem. Domyślnie kalendarze te mają poniedziałek jako pierwszy dzień tygodnia, a niedzielę jako ostatni (konwencja europejska). Służy setfirstweekday()do ustawiania pierwszego dnia tygodnia na niedzielę (6) lub dowolny inny dzień tygodnia. Parametry określające daty są podawane jako liczby całkowite. Aby zapoznać się z powiązaną funkcjonalnością, zobacz także moduły datetimetime.

Funkcje i klasy zdefiniowane w tym module wykorzystują wyidealizowany kalendarz, obecny kalendarz gregoriański rozszerzany w nieskończoność w obu kierunkach. Odpowiada to definicji „proleptycznego kalendarza gregoriańskiego” w książce Dershowitza i Reingolda „Calendrical Calculations”, gdzie jest to kalendarz bazowy dla wszystkich obliczeń. Lata zerowe i ujemne są interpretowane zgodnie z normą ISO 8601. Rok 0 to 1 pne, rok -1 to 2 pne i tak dalej.

Python calendar – jak zacząć z niego korzystać?

Ponieważ calendar jest wbudowanym modułem Pythona, nie trzeba go doinstalowywać.
Aby więc zacząć wykorzystywać jego możliwości, wystarczy w naszym programie –  pliku z rozszerzeniem *.py – zwyczajnie zaimportować moduł calendar
import calendar
Kolejno, jak zaimportowaliśmy moduł calendar, możemy sprawdzić dni tygodnia. Posłuży do tego funkcja weekneader(), czyli:
import calendar
print(calendar.weekheader(9))
Wpisując w nawiazie liczbę 9, czyli najdłuższy string wśród nazw dni po angielski, zobaczymy wynikowo wszystkie dni tygodnia w pełnych nazwach, jak:
Monday Tuesday Wednesday Thursday Friday Saturday Sunday
natomiast zmieniając liczbę 9 na 2, wynik będzie wyglądał tak:
Mo Tu We Th Fr Sa Su

Poniedziałek – pierwszy dzień tygodnia, jak to zmienić?

Moduł calendar w Pythonie, domyślnie korzysta z kalendarza europejskiego, co zostało wyjaśnione na początku tego postu. Jeśli jednak chcemy zmienić ten dzień na inny, na przykład niedzielę, wystarczy skorzystac z funkcji setfirstweekday() i zmienić go na niedzielę (sunday)

import calendar
# ustawimy teraz 1 dzień tygodnia na niedzielę
calendar.setfirstweekday(calendar.SUNDAY)
print(calendar.weekheader(3)) # liczba 3, ustawia długość skrutu dnia do 3 liter

Rok przestępny w funkcji isleap() oraz leapdays()

Aby sprawdzić czy zadany rok jest rokiem przestępnym, wystarczy wykonać poniższy kod, korzystając z funkcji isleap()

import calendar
print(calendar.isleap(2021))

Natomiast, jeśli chcielibyśmy sprawdzić to w szerszym zakresie, np od roku 1984 do roku 2021, zrobimy to za pomocą isleapdays()

import calendar
checkleap = calendar.leapdays(1984, 2021)
print("Mamy {} dni przestępne między 1984 a 2021 rokiem".format(checkleap))

Kiedy wypada 1 dzień danego miesiąca i ile ma dni w wybranym roku?

Niżej przećwiczymy kiedy wypada 1 dzień każdego miesiąca w 2022 roku. Pamiętajmy jednak że liczymy zgodnie z indeksami, jak w tabelach, czyli od zera.
Więc poniedziałek to 0, wtorek 1, środa 2, czwartek 3, piątek 4, sobota 5, niedziela 6.
import calendar
print(calendar.weekday(2022, 1, 1)) # rok, miesiąc dzień, kiedy wypada 1 stycznia?
print(calendar.weekday(2022, 2, 1)) # 1 dzień lutego, liczymy od 0
print(calendar.weekday(2022, 3, 1)) # 1 dzień marca, liczymy od 0
print(calendar.weekday(2022, 4, 1)) # 1 dzień kwietnia, liczymy od 0
print(calendar.weekday(2022, 5, 1)) # 1 dzień maja, liczymy od 0
print(calendar.weekday(2022, 6, 1)) # 1 dzień czerwca, liczymy od 0
print(calendar.weekday(2022, 7, 1)) # 1 dzień lipca, liczymy od 0
print(calendar.weekday(2022, 8, 1)) # 1 dzień sierpnia, liczymy od 0
print(calendar.weekday(2022, 9, 1)) # 1 dzień września, liczymy od 0
print(calendar.weekday(2022, 10, 1)) # 1 dzień paźdzniernika, liczymy od 0
print(calendar.weekday(2022, 11, 1)) # 1 dzień listopada, liczymy od 0
print(calendar.weekday(2022, 12, 1)) # 1 dzień grudnia, liczymy od 0
Funkcja monthrange() pozwala spradzić, jak długi jest dany miesiąc, czyli ile dni wypada w styczniu danego roku, lutym i tak dalej
import calendar
print(calendar.monthrange(2021, 9))

Wydrukujmy kalendarz dla danego miesiąca i roku w pythonie

Na koniec sprawdzimy sobie, w jaki sposób za pomocą funkcji month() będziemy mogli zobaczyć konkretny miesiąc w przyjaznej dla oka formie 🙂

Mamy niżej też argument w (od width – szerokość) oraz l (od long  – długość) – poeksperymentuj tymi wartościami. Liczba 9 przy themonth to wartość, pozwalająca w języku angielskim zapisać pełną nazwę każdego miesiąca.

import calendar
print(calendar.month(theyear = 2021, themonth = 9, w = 5, l = 1))
Nie pozostało nam nic innego jak sprawdzić, jak będzie wyglądał pełen kalendarz na 12 miesięcy roku 2022

import calendar
print(calendar.calendar(2022, w=2, l=2, c=2, m=6))

w – szerokość

l – długość między każdym ciągiem

c, m – liczba wierszy i kolumn

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *