今回は、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 を返します。
TrueFalse | 
を結果を出力すると、以下の様になります。
calendar.leapdays(year1, year2) | 
5. calendar.leapdays() 関数
leapdays()関数を使うと、関数に渡された年の間の閏日を簡単に数え、表現することができます。
構文は以下の様な感じです。
import calendar 
print(calendar.leapdays(2016, 2020)) 
print(calendar.leapdays(2002, 2003)) 
 | 
例えば、以下の様になります。
ここでは、2016年と2020年、2002年と2003年の間のうるう年の日数を数えてみた。
この関数では、これらの年の間にあるうるう日の数を数え、整数値を返す。
10 | 
結果は以下の通りです。

まとめ
何か質問があれば、お気軽にコメントください。
Pythonプログラミングに関連するこのような記事のために、私たちにご期待ください。