カレンダー—一般的なカレンダー関連関数—Pythonドキュメント

提供:Dev Guides
< PythonPython/docs/3.9/library/calendar
移動先:案内検索

calendar —一般的なカレンダー関連の機能

ソースコード: :source: `Lib / calendar.py`



このモジュールを使用すると、Unix cal プログラムのようなカレンダーを出力でき、カレンダーに関連する追加の便利な機能を提供します。 デフォルトでは、これらのカレンダーの週の最初の日は月曜日、最後の日は日曜日です(ヨーロッパの条約)。 setfirstweekday()を使用して、週の最初の日を日曜日(6)またはその他の平日に設定します。 日付を指定するパラメーターは整数として指定されます。 関連する機能については、 datetime および time モジュールも参照してください。

このモジュールで定義されている関数とクラスは、理想化されたカレンダーを使用します。現在のグレゴリオ暦は、両方向に無期限に拡張されています。 これは、ダーショウィッツとレインゴールドの著書「カレンダー計算」の「先発グレゴリオ暦」の定義と一致します。このカレンダーは、すべての計算の基本カレンダーです。 ゼロ年と負の年は、ISO8601規格で規定されているように解釈されます。 0年目は紀元前1年、-1年目は紀元前2年というように続きます。

class calendar.Calendar(firstweekday=0)

Calendar オブジェクトを作成します。 firstweekday は、週の最初の曜日を指定する整数です。 0は月曜日(デフォルト)、6は日曜日です。

Calendar オブジェクトは、フォーマット用のカレンダーデータを準備するために使用できるいくつかのメソッドを提供します。 このクラスは、それ自体はフォーマットを行いません。 これはサブクラスの仕事です。

Calendar インスタンスには次のメソッドがあります。

iterweekdays()

1週間使用される曜日番号のイテレータを返します。 イテレータからの最初の値は、 firstweekday プロパティの値と同じになります。

itermonthdates(year, month)

の月(1–12)のイテレータを返します。 このイテレータは、その月のすべての日( datetime.date オブジェクトとして)と、月の始まりの前または月末の後の、完全な週を取得するために必要なすべての日を返します。

itermonthdays(year, month)

itermonthdates()と同様に、の月のイテレータを返しますが、 datetime.date の範囲によって制限されません。 。 返される日数は、単に月の日数になります。 指定した月以外の日は、日番号が0になります。

itermonthdays2(year, month)

itermonthdates()と同様に、の月のイテレータを返しますが、 datetime.date の範囲によって制限されません。 。 返される日は、月の日番号と曜日の日番号で構成されるタプルになります。

itermonthdays3(year, month)

itermonthdates()と同様に、の月のイテレータを返しますが、 datetime.date の範囲によって制限されません。 。 返される日は、年、月、および月の日の番号で構成されるタプルになります。

バージョン3.7の新機能。

itermonthdays4(year, month)

itermonthdates()と同様に、の月のイテレータを返しますが、 datetime.date の範囲によって制限されません。 。 返される日は、年、月、日、および曜日の番号で構成されるタプルになります。

バージョン3.7の新機能。

monthdatescalendar(year, month)

の月の週のリストを完全な週として返します。 週は、7つの datetime.date オブジェクトのリストです。

monthdays2calendar(year, month)

の月の週のリストを完全な週として返します。 週は、日番号と平日番号の7つのタプルのリストです。

monthdayscalendar(year, month)

の月の週のリストを完全な週として返します。 週は7日間の数字のリストです。

yeardatescalendar(year, width=3)

フォーマットの準備ができている指定された年のデータを返します。 戻り値は月の行のリストです。 各月の行には、最大 width か月(デフォルトは3)が含まれます。 毎月は4〜6週間で、毎週は1〜7日です。 日は datetime.date オブジェクトです。

yeardays2calendar(year, width=3)

フォーマットの準備ができている指定された年のデータを返します( yeardatescalendar()と同様)。 週リストのエントリは、日番号と平日番号のタプルです。 今月以外の日数はゼロです。

yeardayscalendar(year, width=3)

フォーマットの準備ができている指定された年のデータを返します( yeardatescalendar()と同様)。 週リストのエントリは日番号です。 今月以外の日数はゼロです。

class calendar.TextCalendar(firstweekday=0)

このクラスは、プレーンテキストのカレンダーを生成するために使用できます。

TextCalendar インスタンスには次のメソッドがあります。

formatmonth(theyear, themonth, w=0, l=0)

月のカレンダーを複数行の文字列で返します。 w が指定されている場合、中央に配置される日付列の幅を指定します。 l を指定すると、毎週使用する行数が指定されます。 コンストラクターで指定された、または setfirstweekday()メソッドによって設定された最初の平日に依存します。

prmonth(theyear, themonth, w=0, l=0)

formatmonth()によって返される月のカレンダーを印刷します。

formatyear(theyear, w=2, l=1, c=6, m=3)

1年間の m 列のカレンダーを複数行の文字列として返します。 オプションのパラメータ wl 、および c は、それぞれ日付列の幅、1週間あたりの行数、および月の列間のスペースの数です。 コンストラクターで指定された、または setfirstweekday()メソッドによって設定された最初の平日に依存します。 カレンダーを生成できる最も早い年は、プラットフォームによって異なります。

pryear(theyear, w=2, l=1, c=6, m=3)

formatyear()によって返されるように、年間のカレンダーを印刷します。

class calendar.HTMLCalendar(firstweekday=0)

このクラスは、HTMLカレンダーを生成するために使用できます。

HTMLCalendarインスタンスには次のメソッドがあります。

formatmonth(theyear, themonth, withyear=True)

月のカレンダーをHTMLテーブルとして返します。 withyear がtrueの場合、年がヘッダーに含まれます。それ以外の場合は、月の名前のみが使用されます。

formatyear(theyear, width=3)

年のカレンダーをHTMLテーブルとして返します。 width (デフォルトは3)は、行ごとの月数を指定します。

formatyearpage(theyear, width=3, css='calendar.css', encoding=None)

年のカレンダーを完全なHTMLページとして返します。 width (デフォルトは3)は、行ごとの月数を指定します。 css は、使用するカスケードスタイルシートの名前です。 スタイルシートを使用しない場合は、なしを渡すことができます。 encoding は、出力に使用されるエンコーディングを指定します(デフォルトではシステムのデフォルトエンコーディングになります)。

HTMLCalendarには、カレンダーで使用されるCSSクラスをカスタマイズするためにオーバーライドできる次の属性があります。

cssclasses

各平日に使用されるCSSクラスのリスト。 デフォルトのクラスリストは次のとおりです。

cssclasses = ["mon", "tue", "wed", "thu", "fri", "sat", "sun"]

毎日、さらにスタイルを追加できます。

cssclasses = ["mon text-bold", "tue", "wed", "thu", "fri", "sat", "sun red"]

このリストの長さは7項目でなければならないことに注意してください。

cssclass_noday

前月または来月に発生する平日のCSSクラス。

バージョン3.7の新機能。

cssclasses_weekday_head

ヘッダー行の平日の名前に使用されるCSSクラスのリスト。 デフォルトは cssclasses と同じです。

バージョン3.7の新機能。

cssclass_month_head

月の先頭のCSSクラス(formatmonthname()で使用)。 デフォルト値は"month"です。

バージョン3.7の新機能。

cssclass_month

月全体のテーブルのCSSクラス( formatmonth()で使用)。 デフォルト値は"month"です。

バージョン3.7の新機能。

cssclass_year

通年のテーブルテーブルのCSSクラス( formatyear()で使用)。 デフォルト値は"year"です。

バージョン3.7の新機能。

cssclass_year_head

通年のテーブルヘッドのCSSクラス( formatyear()で使用)。 デフォルト値は"year"です。

バージョン3.7の新機能。

上記のクラス属性の名前は単数ですが(例: cssclass_month cssclass_noday)、単一のCSSクラスをスペースで区切られたCSSクラスのリストに置き換えることができます。次に例を示します。

"text-bold text-red"

HTMLCalendarをカスタマイズする方法の例を次に示します。

class CustomHTMLCal(calendar.HTMLCalendar):
    cssclasses = [style + " text-nowrap" for style in
                  calendar.HTMLCalendar.cssclasses]
    cssclass_month_head = "text-center month-head"
    cssclass_month = "text-center month"
    cssclass_year = "text-italic lead"
class calendar.LocaleTextCalendar(firstweekday=0, locale=None)
TextCalendar のこのサブクラスは、コンストラクターでロケール名を渡すことができ、指定されたロケールで月と曜日の名前を返します。 このロケールにエンコーディングが含まれている場合、月と曜日の名前を含むすべての文字列がUnicodeとして返されます。
class calendar.LocaleHTMLCalendar(firstweekday=0, locale=None)
HTMLCalendar のこのサブクラスは、コンストラクターでロケール名を渡すことができ、指定されたロケールで月と曜日の名前を返します。 このロケールにエンコーディングが含まれている場合、月と曜日の名前を含むすべての文字列がUnicodeとして返されます。

ノート

これら2つのクラスのformatweekday()メソッドとformatmonthname()メソッドは、現在のロケールを指定されたロケールに一時的に変更します。 現在のロケールはプロセス全体の設定であるため、スレッドセーフではありません。


単純なテキストカレンダーの場合、このモジュールは次の機能を提供します。

calendar.setfirstweekday(weekday)

毎週開始する平日(0は月曜日、6は日曜日)を設定します。 値MONDAYTUESDAYWEDNESDAYTHURSDAYFRIDAYSATURDAY、および [X85X ]は便宜上提供されています。 たとえば、最初の平日を日曜日に設定するには、次のようにします。

import calendar
calendar.setfirstweekday(calendar.SUNDAY)
calendar.firstweekday()
毎週開始する平日の現在の設定を返します。
calendar.isleap(year)
year がうるう年の場合は True を返し、それ以外の場合は False を返します。
calendar.leapdays(y1, y2)

y1 から y2 (排他的)の範囲のうるう年数を返します。ここで、 y1 および y2 は年です。

この関数は、1世紀の変化にまたがる範囲で機能します。

calendar.weekday(year, month, day)
1970 –…)、1 –)の曜日(0は月曜日)を返します12)、131)。
calendar.weekheader(n)
省略された平日名を含むヘッダーを返します。 n は、平日の1文字の幅を指定します。
calendar.monthrange(year, month)
指定されたおよびについて、月の最初の日の平日と月の日数を返します。
calendar.monthcalendar(year, month)
月のカレンダーを表す行列を返します。 各行は1週間を表します。 月以外の日はゼロで表されます。 setfirstweekday()で設定されていない限り、毎週月曜日から始まります。
calendar.prmonth(theyear, themonth, w=0, l=0)
month()によって返される月のカレンダーを印刷します。
calendar.month(theyear, themonth, w=0, l=0)
TextCalendar クラスのformatmonth()を使用して、月のカレンダーを複数行の文字列で返します。
calendar.prcal(year, w=0, l=0, c=6, m=3)
calendar()によって返されるように、年間のカレンダーを印刷します。
calendar.calendar(year, w=2, l=1, c=6, m=3)
TextCalendar クラスのformatyear()を使用して、1年間の3列のカレンダーを複数行の文字列として返します。
calendar.timegm(tuple)
time モジュールの gmtime()関数によって返されるような時間タプルを取り、1970年のエポックを想定して、対応するUnixタイムスタンプ値を返す、無関係ですが便利な関数。およびPOSIXエンコーディング。 実際、 time.gmtime()timegm()は互いに逆です。

calendar モジュールは、次のデータ属性をエクスポートします。

calendar.day_name
現在のロケールの曜日を表す配列。
calendar.day_abbr
現在のロケールで省略された曜日を表す配列。
calendar.month_name
現在のロケールでの月を表す配列。 これは、1月が月番号1であるという通常の規則に従うため、長さは13で、month_name[0]は空の文字列です。
calendar.month_abbr
現在のロケールで省略された月を表す配列。 これは、1月が月番号1であるという通常の規則に従うため、長さは13で、month_abbr[0]は空の文字列です。

も参照してください

モジュール日時
time モジュールと同様の機能を備えた日付と時刻へのオブジェクト指向インターフェース。
モジュール時間
低レベルの時間関連関数。