Python カレンダーモジュール(例付き)

⚡ スマートサマリー

カレンダーモジュール Python TextCalendarクラスとHTMLCalendarクラスを使用して、テキストカレンダーとHTMLカレンダーを生成します。日、月、年に基づいて日付計算を行い、任意の月の開始曜日をカスタマイズできます。

  • 🔘 カレンダーの種類は2種類あります。 TextCalendarクラスとHTMLCalendarクラスは、選択した月または年のプレーンテキスト形式およびWeb対応形式のカレンダーを生成します。
  • ☑️ 最初の平日: calendar.SUNDAYなどの定数やsetfirstweekday()メソッドは、各週の開始曜日を変更します。
  • 繰り返し日数: itermonthdays() メソッドは 1 か月をループし、重複をマークします。ping 隣接する月の日付はゼロとして処理する。
  • 🧪 ヘルパー関数: isleap()、weekday()、monthrange()などの関数は、特別なライブラリを使わなくても、一般的な日付に関する質問に答えることができます。
  • 🛠️ 標準ライブラリ: カレンダーモジュールには以下のものが含まれています Pythonそのため、インポートして使用する前にインストールする必要はありません。
  • 🤖 AIワークフロー: 機械学習パイプラインは、時系列予測のために、曜日や閏年などのカレンダーの特徴量を抽出します。

Python カレンダー モジュール

その カレンダーモジュール Python 日付、月、年に基づいてさまざまなタスクの計算を可能にするカレンダー クラスがあります。さらに、 テキストカレンダー (NAIST) と HTMLカレンダー のクラス Python カレンダーを編集して、必要に応じて使用できます。 Python カレンダー。

カレンダーモジュールとは何ですか Python?

その カレンダーモジュール の一部です。 Python 標準ライブラリに含まれているため、インストール不要で利用できます。カレンダーを作成したり、日付が何曜日に当たるか、1ヶ月に何日あるかといった一般的な日付に関する質問に答えたりする、複数のクラスとヘルパー関数がまとめられています。

このモジュールは、主に以下の5つのクラスを提供します。

  • カレンダー これは、他のカレンダーが構築されるデータを提供する基底クラスです。
  • テキストカレンダー 1か月分または1年分のプレーンテキスト形式のカレンダーを作成します。
  • HTMLカレンダー ウェブページ用のHTMLテーブルとしてカレンダーを生成します。
  • ロケールテキストカレンダー これは、選択した地域の曜日と月の名前を使用するテキストカレンダーです。
  • LocaleHTMLカレンダー これは、選択されたロケールを尊重するHTMLの同等のものです。

デフォルトでは、暦週は Monday欧州の慣例に従って、最初の曜日は calendar.SUNDAY などの定数を使用して変更できます。以下の例を参照してください。

テキストカレンダーを印刷する方法 Python

ステップ1) コードを実行します。

テキストカレンダーを印刷 Python

  • 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 は出力を表示します。

それでは、値を日曜日から木曜日に変更して、出力結果を確認してみましょう。

最初の平日を変更する Python カレンダー

HTMLカレンダーを印刷する方法 Python

ステップ2) カレンダーをHTML形式で印刷することもできます。この機能は、カレンダーの外観や操作性を変更したい開発者にとって便利です。

HTMLカレンダーを印刷する Python

月の各日をループする方法

ステップ3) ループ c.itermonthdays(2025,4) を使用すると、1 ヶ月の日数を取得できます。

月の日々をループして Python

  • 特定の月(例えば「4月」)の合計日数を取得するコードを実行すると、出力には30日と表示されますが、その日の最初と場合によっては最後に、これらの日数とともにゼロが表示されることがあります。
  • 出力にゼロが含まれている場合は、曜日が重複していることを意味します。ping つまり、その月には属さないということです。
  • 出力にこれらのゼロが表示されるのは、コード内で曜日(木曜日)を指定しているためです。関数「c.itermonthdays」を呼び出すと、木曜日から日数をカウントし始めますが、4月1日が木曜日とは限りません。3月28日や29日が木曜日である可能性もあります。そのため、コードは3月28日から4月1日までの日数をカウントし始めます。これらの日はゼロとしてカウントされ、出力にこれらのゼロが表示されます。月末についても同様です。
  • つまり、1日から30日までの日付を除き、前月と翌月のすべての日付は出力にゼロとして表示されます。

ローカルシステムから月名と曜日名を取得する方法

ステップ4) ローカルシステムから、月や曜日などのデータを取得できます。

ローカルシステムから月名を取得する Python

  • ここでの出力は、ローカルシステムから月名を出力したことを示しています。同様に、以下に示すように曜日名も取得できます。
  • 出力はローカルシステムによって異なります。ローカルシステムが別の国に設定されている場合、その国のローカル設定に基づいて出力されます。ここでは月単位なので違いはありませんが、週単位や日単位の場合は確実に違いが生じます。

ローカルシステムから曜日名を取得します Python

一年を通して特定の日を見つける方法

ステップ5) 特定の日付のリストを年間を通して取得できます。たとえば、毎年1日は監査日です。 Monday 1週間のうちの1週間。最初の1週間の日付を知りたいとしましょう。 Monday 毎月ご利用いただけます。このコードをご利用ください。

年間を通して特定の日を探す Python

  • 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 年間の正確な日数の計算などを行う際に役立ちます。

よくあるご質問

カレンダーモジュールは、テキスト、HTML、曜日番号、閏年チェックなど、カレンダーの作成と分析に特化しています。日時モジュールは、特定の日付と時刻のタイムスタンプ、算術演算、書式設定を処理します。多くのプログラムは、これら両方をインポートして併用します。

calendar.weekday(year, month, day) を呼び出します。0 から 10 までの整数を返します。Monday)から6(日曜日)まで。calendar.day_nameと組み合わせて、その数値を読みやすいラベルに変換します。 Monday または金曜日。

calendar.monthrange(year, month) を使用してください。これはタプルを返します。タプルの2番目の値は日数です。したがって、calendar.monthrange(2025, 2)[1] は 28 を返します。最初の値は、その月の最初の日の曜日です。

calendar.LocaleTextCalendar または calendar.LocaleHTMLCalendar を使用して、「fr_FR」などのロケールを渡します。すると、フォーマットされた月は、その言語で曜日と月の名前を表示します。ただし、そのロケールがオペレーティングシステムにインストールされていることが前提となります。

HTMLCalendar().formatmonth(2025, 1)でマークアップを生成し、書き込みモードでファイルを開いて、その文字列を使ってwrite()を呼び出します。.html拡張子で保存すれば、どのブラウザでもスタイルが適用されたカレンダーを表示できます。

デフォルトでは週は Monday欧州の慣例に従い、週の開始日を別の曜日にするには、calendar.setfirstweekday(calendar.SUNDAY) を呼び出すか、calendar.SUNDAY などの定数を TextCalendar に渡します。

データパイプラインは、カレンダー関数を使用して、生の日付から曜日、週番号、閏年フラグなどの特徴量を抽出します。これらの設計されたカレンダー機能は、機械学習モデルが時系列予測における週単位および季節単位のパターンを捉えるのに役立ちます。

はい。GitHub Copilotやエージェント型AIアシスタントは、短いコメントからカレンダーモジュールのコードスニペット(月の表示、閏年のチェック、HTMLカレンダーの作成など)を作成できます。 Rev出力結果を確認してください。曜日インデックスと初日設定は混同しやすいためです。