Python カレンダーモジュール(例付き)
⚡ スマートサマリー
カレンダーモジュール Python TextCalendarクラスとHTMLCalendarクラスを使用して、テキストカレンダーとHTMLカレンダーを生成します。日、月、年に基づいて日付計算を行い、任意の月の開始曜日をカスタマイズできます。
その カレンダーモジュール Python 日付、月、年に基づいてさまざまなタスクの計算を可能にするカレンダー クラスがあります。さらに、 テキストカレンダー (NAIST) と HTMLカレンダー のクラス Python カレンダーを編集して、必要に応じて使用できます。 Python カレンダー。
カレンダーモジュールとは何ですか Python?
その カレンダーモジュール の一部です。 Python 標準ライブラリに含まれているため、インストール不要で利用できます。カレンダーを作成したり、日付が何曜日に当たるか、1ヶ月に何日あるかといった一般的な日付に関する質問に答えたりする、複数のクラスとヘルパー関数がまとめられています。
このモジュールは、主に以下の5つのクラスを提供します。
- カレンダー これは、他のカレンダーが構築されるデータを提供する基底クラスです。
- テキストカレンダー 1か月分または1年分のプレーンテキスト形式のカレンダーを作成します。
- HTMLカレンダー ウェブページ用のHTMLテーブルとしてカレンダーを生成します。
- ロケールテキストカレンダー これは、選択した地域の曜日と月の名前を使用するテキストカレンダーです。
- LocaleHTMLカレンダー これは、選択されたロケールを尊重するHTMLの同等のものです。
デフォルトでは、暦週は Monday欧州の慣例に従って、最初の曜日は calendar.SUNDAY などの定数を使用して変更できます。以下の例を参照してください。
テキストカレンダーを印刷する方法 Python
ステップ1) コードを実行します。
- Code 1行目: まず「import calendar」から始めます。これにより、このモジュールのすべてのクラスがインポートされます。
- Code 3行目: c = calendar.TextCalendar(calendar.SUNDAY) は、テキストカレンダーを作成するようにインタープリタに指示します。月の始まりは日曜日になります。 Pythonカレンダーの書式を自由に設定したり、月の開始日を変更したりできます。
- Code 4行目: str= c.formatmonth(2025,1) は、2025年の1月(1月)のカレンダーを作成します。
- Code 5行目:print str は出力を表示します。
それでは、値を日曜日から木曜日に変更して、出力結果を確認してみましょう。
HTMLカレンダーを印刷する方法 Python
ステップ2) カレンダーをHTML形式で印刷することもできます。この機能は、カレンダーの外観や操作性を変更したい開発者にとって便利です。
月の各日をループする方法
ステップ3) ループ c.itermonthdays(2025,4) を使用すると、1 ヶ月の日数を取得できます。
- 特定の月(例えば「4月」)の合計日数を取得するコードを実行すると、出力には30日と表示されますが、その日の最初と場合によっては最後に、これらの日数とともにゼロが表示されることがあります。
- 出力にゼロが含まれている場合は、曜日が重複していることを意味します。ping つまり、その月には属さないということです。
- 出力にこれらのゼロが表示されるのは、コード内で曜日(木曜日)を指定しているためです。関数「c.itermonthdays」を呼び出すと、木曜日から日数をカウントし始めますが、4月1日が木曜日とは限りません。3月28日や29日が木曜日である可能性もあります。そのため、コードは3月28日から4月1日までの日数をカウントし始めます。これらの日はゼロとしてカウントされ、出力にこれらのゼロが表示されます。月末についても同様です。
- つまり、1日から30日までの日付を除き、前月と翌月のすべての日付は出力にゼロとして表示されます。
ローカルシステムから月名と曜日名を取得する方法
ステップ4) ローカルシステムから、月や曜日などのデータを取得できます。
- ここでの出力は、ローカルシステムから月名を出力したことを示しています。同様に、以下に示すように曜日名も取得できます。
- 出力はローカルシステムによって異なります。ローカルシステムが別の国に設定されている場合、その国のローカル設定に基づいて出力されます。ここでは月単位なので違いはありませんが、週単位や日単位の場合は確実に違いが生じます。
一年を通して特定の日を見つける方法
ステップ5) 特定の日付のリストを年間を通して取得できます。たとえば、毎年1日は監査日です。 Monday 1週間のうちの1週間。最初の1週間の日付を知りたいとしましょう。 Monday 毎月ご利用いただけます。このコードをご利用ください。
- mycal = calendar.monthcalendar(2025, month) は、その月のカレンダーを作成します。
- 変数week1とweek2に、カレンダーの1週目と2週目を設定します。
- 第1週の内容を確認してください Monday そして監査日を設定する。
- それ以外の場合は、監査日を最初の日に設定します。 Monday 第2週に。
- 出力には最初の日付が表示されます。 Monday それはその月に該当します。
- この Cal オブジェクトの長さは、その月に何週間あるかによって決まります。私たちの場合は、最初の週が 1 週間または 2 週間なので、 Monday 週の終わりはたいてい最初の週に訪れますが、そうでない場合は2週目を検討します。なぜ2週目も検討するのか、詳しく見ていきましょう。
- ここではカレンダー定数を使用しています Mondayカレンダーオブジェクトは、日曜日を表す定数を提供します。 Monday、火曜日など。もし、第 1 週に、 Monday 定数は 0 と等しくない – 覚えておいてください、0 は別の月に属する日を意味します – 次に Monday 今月に属し、監査日は第1週目以内です。0の場合は、最初の Monday 月の最初の週にはないのだから、それは2週目にあるに違いない。
- その場合、監査日変数を次のように設定します。 Monday これは第2週を表します。監査日は、第1週または第2週のいずれかの日付で返されます。
完全 Python カレンダー Code 例:
以下に完全なコードを示します。
Python 2例
import calendar # Create a plain text calendar c = calendar.TextCalendar(calendar.THURSDAY) str = c.formatmonth(2025, 1, 0, 0) print str # Create an HTML formatted calendar hc = calendar.HTMLCalendar(calendar.THURSDAY) str = hc.formatmonth(2025, 1) print str # loop over the days of a month # zeroes indicate that the day of the week is in a next month or overlapping month for i in c.itermonthdays(2025, 4): print i # The calendar can give info based on local such a names of days and months (full and abbreviated forms) for name in calendar.month_name: print name for day in calendar.day_name: print day # calculate days based on a rule: For instance an audit day on the second Monday of every month # Figure out what days that would be for each month, we can use the script as shown here for month in range(1, 13): # It retrieves a list of weeks that represent the month mycal = calendar.monthcalendar(2025, month) # The first MONDAY has to be within the first two weeks week1 = mycal[0] week2 = mycal[1] if week1[calendar.MONDAY] != 0: auditday = week1[calendar.MONDAY] else: # if the first MONDAY isn't in the first week, it must be in the second week auditday = week2[calendar.MONDAY] print "%10s %2d" % (calendar.month_name[month], auditday)
Python 3例
import calendar # Create a plain text calendar c = calendar.TextCalendar(calendar.THURSDAY) str = c.formatmonth(2025, 1, 0, 0) print(str) # Create an HTML formatted calendar hc = calendar.HTMLCalendar(calendar.THURSDAY) str = hc.formatmonth(2025, 1) print(str) # loop over the days of a month # zeroes indicate that the day of the week is in a next month or overlapping month for i in c.itermonthdays(2025, 4): print(i) # The calendar can give info based on local such a names of days and months (full and abbreviated forms) for name in calendar.month_name: print(name) for day in calendar.day_name: print(day) # calculate days based on a rule: For instance an audit day on the second Monday of every month # Figure out what days that would be for each month, we can use the script as shown here for month in range(1, 13): # It retrieves a list of weeks that represent the month mycal = calendar.monthcalendar(2025, month) # The first MONDAY has to be within the first two weeks week1 = mycal[0] week2 = mycal[1] if week1[calendar.MONDAY] != 0: auditday = week1[calendar.MONDAY] else: # if the first MONDAY isn't in the first week, it must be in the second week auditday = week2[calendar.MONDAY] print("%10s %2d" % (calendar.month_name[month], auditday))
の便利な機能 Python カレンダーモジュール
上記の手順に加えて、カレンダーモジュールには、クラスインスタンスを作成せずに動作する便利な関数がいくつか付属しています。
- calendar.calendar(year) 1年間のカレンダーを複数行の文字列として返しますが、 calendar.prcal(year) 直接印刷します。
- calendar.month(年, 月) テキストとして1ヶ月分を返し、 calendar.prmonth(年, 月) それを印刷します。
- calendar.monthcalendar(年, 月) 月を週の行のリストとして返します。各日は整数で、その月の外側の日は0です。
これらの機能により、1行で素早くカレンダーを出力することが可能になり、TextCalendarクラスやHTMLCalendarクラスの高度な制御を必要としないスクリプトや対話型セッションで便利です。
うるう年を確認する方法 Python
カレンダーモジュールは、その年が閏年かどうかを判定することもできます。閏年は2月が28日ではなく29日になるため、これは重要な情報です。この判定には2つの関数が用いられています。
- calendar.isleap(year) 閏年の場合は True を返し、それ以外の場合は False を返します。
- calendar.leapdays(y1, y2) y1からy2までの範囲(y2は含まない)における閏年の数を返します。
例えば、`calendar.isleap(2024)` は True を返し、`calendar.isleap(2025)` は False を返します。うるう年のチェックは、日付の検証、定期的なイベントのスケジュール設定、2 年間の正確な日数の計算などを行う際に役立ちます。








