##
6.9.5 `time` オブジェクト

`time` オブジェクトは (ローカルの) 日中時刻を表現します。 この時刻表現は特定の日の影響を受けず、`tzinfo` オブジェクト を介した修正の対象となります。

class `time`( | hour=0, minute=0, second=0, microsecond=0, tzinfo=None)

  全ての引数はオプションです。tzinfo は `None` または `tzinfo` クラスのサブクラスのインスタンス にすることができます。残りの引数は整数または長整数で、 以下のような範囲に入ります:

  - `0 <= hour < 24`
  - `0 <= minute < 60`
  - `0 <= second < 60`
  - `0 <= microsecond < 1000000`.

  引数がこれらの範囲外にある場合、 `ValueError` が送出されます。

以下にクラス属性を示します:

`min`
  表現できる最も古い `datetime` で、 `time(0, 0, 0, 0)` です。 The earliest representable `time`, `time(0, 0, 0, 0)`.

`max`
  表現できる最も新しい `datetime` で、 `time(23, 59, 59, 999999, tzinfo=None)` です。

`resolution`
  等しくない `datetime` オブジェクト間の最小の差で、 `timedelta(microseconds=1)` ですが、`time` オブジェクト間の四則演算はサポートされて いないので注意してください。

以下に (読み出し専用の) インスタンス属性を示します:

`hour`
  `range(24)` 内の値です。

`minute`
  `range(60)` 内の値です。

`second`
  `range(60)` 内の値です。

`microsecond`
  `range(1000000)` 内の値です。

`tzinfo`
  `time` コンストラクタに tzinfo 引数として 与えられたオブジェクトになり、何も渡されなかった場合には `None` になります。

以下にサポートされている操作を示します:

- `time` と `time` の比較では、a が時刻として b よりも前を表す場合に a は b よりも小さいと見なされます。 被演算子の片方が naive でもう一方が aware の場合、 `TypeError` が送出されます。両方の被演算子が aware で、 同じ `tzinfo` メンバを持つ場合、共通の `tzinfo` メンバは無視され、基本の datetime 間の比較が行われます。 両方の被演算子が aware で異なる `tzinfo` メンバを持つ 場合、被演算子はまず (`self.utcoffset()` で得られる) UTC オフセット で修正されます。 型混合の比較がデフォルトのオブジェクトアドレス比較となってしまう のを抑止するために、`time` オブジェクトが他の型のオブジェクトと 比較された場合、比較演算子が `==` または `!=` でないかぎり `TypeError` が送出されます。 後者の場合、それぞれ `False` または `True` を返します。

- ハッシュ化、辞書のキーとしての利用

- 効率的な pickle 化

- ブール演算コンテキストでは、`time` オブジェクトは、 分に変換し、`utfoffset()` (`None` を返した場合には `0`) を差し引いて変換した後の結果がゼロでない場合、かつその ときに限って真とみなされます。

以下にインスタンスメソッドを示します:

`replace`( | ()

  hour=, minute=, second=, microsecond=, tzinfo=) キーワード引数で指定したメンバの値を除き、同じ値をもつ `time` オブジェクトを返します。 メンバに対する変換を行わずに aware な datetime オブジェクトから naive な `time` オブジェクトを生成するために、 `tzinfo=None` を指定することもできます。

`isoformat`( | )

  日付と時刻を ISO 8601 形式、すなわち HH:MM:SS.mmmmmm か、 `microsecond` が 0 の場合には HH:MM:SS で表した文字列を返します。 `utcoffset()` が `None` を返さない場合、 UTC からのオフセットを時間と分を表した (符号付きの) 6 文字からなる 文字列が追加されます: すなわち、 HH:MM:SS.mmmmmm+HH:MM となるか、 `microsecond` が 0 の場合には HH:MM:SS+HH:MM となります。

`__str__`( | )

  `time` オブジェクト t において、 `str(t)` は `t.isoformat()` と等価です。

`strftime`( | format)

  明示的な書式化文字列で制御された、日付を表現する文字列を返します。 `strftime()` のふるまいについてのセクションを参照して ください。

`utcoffset`( | )

  `tzinfo` が `None` の場合、`None` を返し、 そうでない場合には `self.tzinfo.utcoffset(None)` を返します。後者の式が `None` か、1 日以下の大きさを持つ 経過時間を表す `timedelta` オブジェクトのいずれかを返さない 場合には例外を送出します。

`dst`( | )

  `tzinfo` が `None` の場合、`None` を返し、 そうでない場合には `self.tzinfo.dst(None)` を返します。後者の式が `None` か、1 日以下の大きさを持つ 経過時間を表す `timedelta` オブジェクトのいずれかを返さない 場合には例外を送出します。

`tzname`( | )

  `tzinfo` が `None` の場合、`None` を返し、 そうでない場合には `self.tzinfo.tzname(None)` を返します。後者の式が `None` か文字列オブジェクトのいずれか を返さない場合には例外を送出します。