今回は、PythonのCalendarモジュールについて詳しく説明します。
まず、calendarモジュールとは何でしょうか?
Pythonでは、データを扱い、操作や変更を行い、フォーマットされた形で表示させるための様々なモジュールを提供しています。
Pythonのcalendarモジュールを使えば、日付に関連するデータをカレンダーのような形式で簡単に表現することができます。
さらに、日付に関連するデータを操作して、必要なデータを取り出すための関数も多数提供されています。
カレンダーモジュールは、日付、年、月、日、そして月の週、うるう年などの属性でデータを操作し、表現するのに役立ちます。
Python の calendar モジュールの関数
Pythonのcalendarモジュールが提供する以下の関数を取り上げます。
- calendar.month() 関数
- calendar.calendar()関数
- monthdatescalendar()関数
- formatmonth()関数
- isleap()関数
- leapdays()関数
それでは、次節でそれぞれの関数について見ていきましょう
1. calendar.month() 関数
calendar モジュールを使うと、月全体のカレンダーを読みやすいカレンダー形式で簡単に表現することができます。
calendar.month()関数を使用すると、任意の月のカレンダーを表現することができます。
そのためには、month()関数に月と年の値を渡す必要があります。
以下の構文を見てください。
calendar.month(year, month) |
例えば、以下の様になります。
この例では、年 = 2020、月 = 8、すなわち 8 月を渡しました。
したがって、month()関数は、2020年の8月のカレンダーを返します。
import calendar
year = 2020
month = 8 print (calendar.month(year, month))
|
結果は以下の通りです。
August 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
31 |
2. calendar.calendar()関数
Pythonのcalendarモジュールを使えば、月のカレンダーだけでなく、1年分のカレンダーをカスタマイズして表現することも可能です。
構文は以下の通りです。
calendar.calendar(year) |
例えば、以下の様になります。
この例では、calendar.calendar()関数を使って、2020年のカレンダー全体を表現しています。
import calendar
year = 2020
print (calendar.calendar(year))
|
結果は以下の通りです。
calendar.HTMLCalendar(firstweekday = 0 )
|
3. 月を HTML 形式で表現する
カレンダーモジュールは、特定の月や年のデータをHTML形式で表現することができます。
このため、希望する月のデータをHTML形式で表現し、それに関連するタグを付けることができます。
構文は以下の様な感じです。
import calendar
cal = calendar.HTMLCalendar(firstweekday = 0 )
print (cal.formatmonth( 2020 , 9 , withyear = True ))
|
例えば、以下の様になります。
calendar.HTMLCalendar()関数で、カレンダーのHTMLインスタンスを生成することができます。
さらに、formatmonth()関数を使用すると、希望の年の希望の月のHTMLカレンダーを生成することができます。
withyear = TRUEとすることで、HTML形式のヘッダーに年の値を含めることができます。
<table border = "0" cellpadding = "0" cellspacing = "0" class = "month" >
<tr><th colspan = "7" class = "month" >September 2020 < / th>< / tr>
<tr><th class = "mon" >Mon< / th><th class = "tue" >Tue< / th><th class = "wed" >Wed< / th><th class = "thu" >Thu< / th><th class = "fri" >Fri< / th><th class = "sat" >Sat< / th><th class = "sun" >Sun< / th>< / tr>
<tr><td class = "noday" > < / td><td class = "tue" > 1 < / td><td class = "wed" > 2 < / td><td class = "thu" > 3 < / td><td class = "fri" > 4 < / td><td class = "sat" > 5 < / td><td class = "sun" > 6 < / td>< / tr>
<tr><td class = "mon" > 7 < / td><td class = "tue" > 8 < / td><td class = "wed" > 9 < / td><td class = "thu" > 10 < / td><td class = "fri" > 11 < / td><td class = "sat" > 12 < / td><td class = "sun" > 13 < / td>< / tr>
<tr><td class = "mon" > 14 < / td><td class = "tue" > 15 < / td><td class = "wed" > 16 < / td><td class = "thu" > 17 < / td><td class = "fri" > 18 < / td><td class = "sat" > 19 < / td><td class = "sun" > 20 < / td>< / tr>
<tr><td class = "mon" > 21 < / td><td class = "tue" > 22 < / td><td class = "wed" > 23 < / td><td class = "thu" > 24 < / td><td class = "fri" > 25 < / td><td class = "sat" > 26 < / td><td class = "sun" > 27 < / td>< / tr>
<tr><td class = "mon" > 28 < / td><td class = "tue" > 29 < / td><td class = "wed" > 30 < / td><td class = "noday" > < / td><td class = "noday" > < / td><td class = "noday" > < / td><td class = "noday" > < / td>< / tr>
< / table>
|
を出力します。
calendar.isleap(year) |
4. calendar.isleap() 関数
calendar.isleap()関数を使うと、ある年がうるう年かどうかを調べることができます。
構文は以下の通りです。
import calendar
print (calendar.isleap( 2020 ))
print (calendar.isleap( 2002 ))
|
例えば、以下の様になります。
以下の例では、’2020′ と ‘2002’ がうるう年であるかどうかを調べています。
isleap() はブール関数なので、うるう年であれば TRUE を、そうでなければ FALSE を返します。
True False |
を結果を出力すると、以下の様になります。
calendar.leapdays(year1, year2) |
5. calendar.leapdays() 関数
leapdays()関数を使うと、関数に渡された年の間の閏日を簡単に数え、表現することができます。
構文は以下の様な感じです。
import calendar
print (calendar.leapdays( 2016 , 2020 ))
print (calendar.leapdays( 2002 , 2003 ))
|
例えば、以下の様になります。
ここでは、2016年と2020年、2002年と2003年の間のうるう年の日数を数えてみた。
この関数では、これらの年の間にあるうるう日の数を数え、整数値を返す。
1 0 |
結果は以下の通りです。
まとめ
何か質問があれば、お気軽にコメントください。
Pythonプログラミングに関連するこのような記事のために、私たちにご期待ください。