# 6.9 `datetime` -- 基本的な日付型および時間型

バージョン2.3 以降で新規追加された 仕様です。

`datetime` モジュールでは、日付や時間データを簡単な方法と 複雑な方法の両方で操作するためのクラスを提供しています。 日付や時刻を対象にした四則演算がサポートされている一方で、 このモジュールの実装では出力の書式化や操作を目的とした データメンバの効率的な取り出しに焦点を絞っています。

日付および時刻オブジェクトには、``naive'' および ``aware'' の 2種類があります。この区別はオブジェクトがタイムゾーン や夏時間、あるいはその他のアルゴリズム的、政治的な理由に よる時刻の修正に関する何らかの表記をもつかどうかによるものです。 特定の数字がメートルか、マイルか、質量を表すかといったことが プログラムの問題であるように、 naive な `datetime` オブジェクトが標準世界時 (UTC: Coordinated Universal time) を表現するか、ローカルの時刻を表現するか、 ありは他のいずれかのタイムゾーンにおける時刻を表現するかは 純粋にプログラムの問題となります。 naive な `datetime` オブジェクトは、 現実世界のいくつかの側面を無視するという犠牲のもとに、 理解しやすく、かつ利用しやすくなっています。

より多くの情報を必要とするアプリケーションのために、 `datetime` および `time` オブジェクトはオプションの タイムゾーン情報メンバ、`tzinfo` を持っています。このメンバ には抽象クラス `tzinfo` のサブクラスのインスタンスが入って います。`tzinfo` オブジェクトは UTC 時刻からのオフセット、 タイムゾーン名、夏時間が有効になっているかどうか、といった情報 を記憶しています。 `datetime` モジュールでは具体的な `tsinfo` クラスを 提供していないので注意してください。必要な詳細仕様を備えた タイムゾーン機能を提供するのはアプリケーションの責任です。 世界各国における時刻の修正に関する法則は合理的というよりも政治的な ものであり、全てのアプリケーションに適した標準というものが 存在しないのです。

`datetime` モジュールでは以下の定数を公開しています:

`MINYEAR`
  `date` や `datetime` オブジェクトで許されている、 年を表現する最小の数字です。`MINYEAR` は `1` です。

`MAXYEAR`
  `date` や `datetime` オブジェクトで許されている、 年を表現する最大の数字です。`MAXYEAR` は `9999` です。

参考資料:

`calendar`モジュール:
  汎用のカレンダー関連関数。.

`time`モジュール:
  時刻へのアクセスと変換。.