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 列のカレンダーを複数行の文字列として返します。 オプションのパラメータ w 、 l 、および 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
は日曜日)を設定します。 値MONDAY
、TUESDAY
、WEDNESDAY
、THURSDAY
、FRIDAY
、SATURDAY
、および [X85X ]は便宜上提供されています。 たとえば、最初の平日を日曜日に設定するには、次のようにします。import calendar calendar.setfirstweekday(calendar.SUNDAY)
- calendar.firstweekday()
- 毎週開始する平日の現在の設定を返します。
- calendar.leapdays(y1, y2)
y1 から y2 (排他的)の範囲のうるう年数を返します。ここで、 y1 および y2 は年です。
この関数は、1世紀の変化にまたがる範囲で機能します。
- calendar.weekday(year, month, day)
- 年(
1970
–…)、月(1
–)の曜日(0
は月曜日)を返します12
)、日(1
–31
)。
- 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]
は空の文字列です。