## 6.9.1 利用可能なデータ型

class `date`
  理想化された naive な日付表現で、実質的には、これまでもこれからも 現在のグレゴリ暦 (Gregorian calender) であると仮定しています。 属性: `year`、 `month`、および `day`。

class `time`
  理想化された時刻表現で、あらゆる特定の日における影響から独立 しており、毎日厳密に 24*60*60 秒であると仮定します ("うるう秒: leap seconds" の概念はありません)。 属性: `hour`、 `minute`、`second`、 `microsecond`、 および `tzinfo`。

class `datetime`
  日付と時刻を組み合わせたもの。 属性: `year`、 `month`、 `day`、 `hour`、 `minute`、 `second`、 `microsecond`、および `tzinfo`。

class `timedelta`
  `date`、`time`、あるいは `datetime` クラスの 二つのインスタンス間の時間差をマイクロ秒精度で表す経過時間値です。

class `tzinfo`
  タイムゾーン情報オブジェクトの抽象基底クラスです。 `datetime` および `time` クラスで用いられ、 カスタマイズ可能な時刻修正の概念 (たとえばタイムゾーンや 夏時間の計算）を提供します。

これらの型のオブジェクトは変更不可能 (immutable) です。

`date` 型のオブジェクトは常に naive です。

`time` や `datetime` 型のオブジェクト d は naive にも aware にもできます。d は `d.tzinfo` が `None` でなく、かつ `d.tzinfo.utcoffset(d)` が `None` を返さない場合に aware となります。`d.tzinfo` が `None` の場合や、`d.tzinfo` は `None` では ないが `d.tzinfo.utcoffset(d)` が `None` を 返す場合には、d は naive となります。

naive なオブジェクトと aware なオブジェクトの区別は `timedelta` オブジェクトにはあてはまりません。

サブクラスの関係は以下のようになります:

    object
        timedelta
        tzinfo
        time
        date
            datetime