date オブジェクトは日付 (年、月、および日) を表します。 日付は理想的なカレンダー、すなわち現在のグレゴリオ暦を過去と未来の 両方向に無限に延長したもので表されます。1 年の 1 月 1 日は日番号 1、 1 年 1 月 2 日は日番号 2、となっていきます。この暦法は、 全ての計算における基本カレンダーである、 Dershowitz と Reingold の書籍 Calendrical Calculations における "予期的グレゴリオ (proleptic Gregorian)" 暦の定義に一致します。
year, month, day) |
MINYEAR <= year <= MAXYEAR
1 <= month <= 12
1 <= day <= 指定された月と年における日数
範囲を超えた引数を与えた場合、ValueError が送出 されます。
他のコンストラクタ、および全てのクラスメソッドを以下に示します:
) |
date.fromtimestamp(time.time())
と等価です。
timestamp) |
ordinal) |
1 <= ordinal <= date.max.toordinal()
でない場合、ValueError が送出されます。
任意の日付 d に対し、
date.fromordinal(d.toordinal()) == d
となります。
以下にクラス属性を示します:
date(MINYEAR, 1, 1)
です。
date(MAXYEAR, 12, 31)
です。
timedelta(days=1)
です。
以下に (読み出し専用の) インスタンス属性を示します:
サポートされている操作を以下に示します:
演算 | 結果 |
---|---|
date2 = date1 + timedelta |
date2 はから date1 から timedelta.days 日
移動した日付です。 (1) |
date2 = date1 - timedelta |
date2 + timedelta
== date1 であるような日付 date2 を計算します。 (2) |
timedelta = date1 - date2 |
(3) |
date1 < date2 |
date1 が時刻として date2 よりも前を表す場合に、 date1 はdate2 よりも小さいと見なされます。 (4) |
注釈:
timedelta.days > 0
の場合進む方向に、
timedelta.days < 0
の場合戻る方向に移動します。
演算後は、date2 - date1 == timedelta.days
となります。
timedelta.seconds
および
timedelta.microseconds
は無視されます。
date2.year
が MINYEAR になってしまったり、
MAXYEAR より大きくなってしまう場合には
OverflowError が送出されます。
timedelta.seconds
および
timedelta.microseconds
は無視されます。
date1.toordinal() < date2.toordinal()
であり、かつそのときに限り date1 < date2
となります。
型混合の比較がデフォルトのオブジェクトアドレス比較となってしまう
のを抑止するために、timedelta オブジェクトと異なる型の
オブジェクトが比較されると TypeError が送出されます。
しかしながら、被比較演算子のもう一方が timetuple 属性を
持つ場合には NotImplemented
が返されます。
このフックにより、他種の日付オブジェクトに型混合比較を実装する
チャンスを与えています。
そうでない場合、timedelta オブジェクトと異なる型の
オブジェクトが比較されると、比較演算子が ==
または !=
でないかぎり TypeError が送出されます。
後者の場合、それぞれ False または True
を返します。
date オブジェクトは辞書のキーとして用いることができます。 ブール演算コンテキストでは、全ての date オブジェクトは 真であるとみなされます。
以下にインスタンスメソッドを示します:
year, month, day) |
d == date(2002, 12, 31)
とすると、
d.replace(day=26) == date(2002, 12, 26)
となります。
) |
d.timetuple()
は
time.struct_time((d.year, d.month, d.day,
0, 0, 0,
d.weekday(),
d.toordinal() - date(d.year, 1, 1).toordinal() + 1,
-1))
と等価です。
) |
date.fromordinal(d.toordinal()) == d
となります。
) |
date(2002, 12, 4).weekday() == 2
であり、水曜日を示します。
isoweekday() も参照してください。
) |
date(2002, 12, 4).weekday() == 3
であり、水曜日を示します。
weekday()、isocalendar() も参照してください。
) |
ISO カレンダーはグレゴリオ暦の変種として広く用いられています。 細かい説明については http://www.phys.uu.nl/~vgent/calendar/isocalendar.htmを参照してください。
ISO 年は完全な週が 52 または 53 週あり、週は月曜から始まって日曜に 終わります。ISO 年でのある年における最初の週は、その年の木曜日を含む 最初の (グレゴリオ暦での) 週となります。この週は週番号 1 と呼ばれ、 この木曜日での ISO 年はグレゴリオ暦における年と等しくなります。
例えば、2004 年は木曜日から始まるため、ISO 年の最初の週は
2003 年 12 月 29 日、月曜日から始まり、2004 年 1 月 4 日、日曜日に
終わります。従って、
date(2003, 12, 29).isocalendar() == (2004, 1, 1)
であり、かつ
date(2004, 1, 4).isocalendar() == (2004, 1, 7)
となります。
) |
date(2002, 12, 4).isoformat() == '2002-12-04'
となります。
) |
str(d)
は d.isoformat()
と等価です。
) |
d.ctime()
は
time.ctime(time.mktime(d.timetuple()))
と等価です。
format) |
ご意見やご指摘をお寄せになりたい方は、 このドキュメントについて... をご覧ください。