##
13 DateTime オブジェクト

`datetime` モジュールでは、様々な日付オブジェクトや時刻オブジェクト を提供しています。以下に示す関数を使う場合には、あらかじめヘッダファイル datetime.h をソースに include し (Python.h はこのファイルを include しません)、`PyDateTime_IMPORT()` マクロを起動しておく 必要があります。このマクロは以下のマクロで使われる静的変数 `PyDateTimeAPI` に C 構造体へのポインタを入れます。

以下は型チェックマクロです:

int `PyDate_Check`( | PyObject *ob)

  ob が`PyDateTime_DateType` 型か`PyDateTime_DateType` 型のサブタイプのオブジェクトの場合に真を返します; ob は `NULL` であってはなりません。 バージョン 2.4 で 新たに追加 された仕様です。

int `PyDate_CheckExact`( | PyObject *ob)

  ob が`PyDateTime_DateType` 型のオブジェクトの場合に真を返します; ob は `NULL` であってはなりません。 バージョン 2.4 で 新たに追加 された仕様です。

int `PyDateTime_Check`( | PyObject *ob)

  ob が`PyDateTime_DateTimeType` 型か `PyDateTime_DateTimeType` 型のサブタイプのオブジェクトの 場合に真を返します; ob は `NULL` であってはなりません。 バージョン 2.4 で 新たに追加 された仕様です。

int `PyDateTime_CheckExact`( | PyObject *ob)

  ob が`PyDateTime_DateTimeType` 型のオブジェクトの場合に真を返します; ob は `NULL` であってはなりません。 バージョン 2.4 で 新たに追加 された仕様です。

int `PyTime_Check`( | PyObject *ob)

  ob が`PyDateTime_TimeType` 型か`PyDateTime_TimeType` 型のサブタイプのオブジェクトの場合に真を返します; ob は `NULL` であってはなりません。 バージョン 2.4 で 新たに追加 された仕様です。

int `PyTime_CheckExact`( | PyObject *ob)

  ob が`PyDateTime_TimeType` 型のオブジェクトの場合に真を返します; ob は `NULL` であってはなりません。 バージョン 2.4 で 新たに追加 された仕様です。

int `PyDelta_Check`( | PyObject *ob)

  ob が`PyDateTime_DeltaType` 型か`PyDateTime_DeltaType` 型のサブタイプのオブジェクトの場合に真を返します; ob は `NULL` であってはなりません。 バージョン 2.4 で 新たに追加 された仕様です。

int `PyDelta_CheckExact`( | PyObject *ob)

  ob が`PyDateTime_DeltaType` 型のオブジェクトの場合に真を返します; ob は `NULL` であってはなりません。 バージョン 2.4 で 新たに追加 された仕様です。

int `PyTZInfo_Check`( | PyObject *ob)

  ob が`PyDateTime_TZInfoType` 型か`PyDateTime_TZInfoType` 型のサブタイプのオブジェクトの場合に真を返します; ob は `NULL` であってはなりません。 バージョン 2.4 で 新たに追加 された仕様です。

int `PyTZInfo_CheckExact`( | PyObject *ob)

  ob が`PyDateTime_TZInfoType` 型のオブジェクトの場合に真を返します; ob は `NULL` であってはなりません。 バージョン 2.4 で 新たに追加 された仕様です。

以下はオブジェクトを作成するためのマクロです:

PyObject* `PyDate_FromDate`( | int year, int month, int day)

  戻り値: 新たな参照.
  指定された年、月、日の`datetime.date` オブジェクトを返します。 バージョン 2.4 で 新たに追加 された仕様です。

PyObject* `PyDateTime_FromDateAndTime`( | int year, int month, int day, int hour, int minute, int second, int usecond)

  戻り値: 新たな参照.
  指定された年、月、日、時、分、秒、マイクロ秒の`datetime.datetime` オブジェクトを返します。 バージョン 2.4 で 新たに追加 された仕様です。

PyObject* `PyTime_FromTime`( | int hour, int minute, int second, int usecond)

  戻り値: 新たな参照.
  指定された時、分、秒、マイクロ秒の`datetime.time` オブジェクトを返します。 バージョン 2.4 で 新たに追加 された仕様です。

PyObject* `PyDelta_FromDSU`( | int days, int seconds, int useconds)

  戻り値: 新たな参照.
  指定された日、秒、マイクロ秒の`datetime.timedelta` オブジェクトを 返します。マイクロ秒と秒が `datetime.timedelta` オブジェクトで 定義されている範囲に入るように正規化を行います。 バージョン 2.4 で 新たに追加 された仕様です。

以下のマクロは date オブジェクトからフィールド値を取り出すための ものです。引数は`PyDateTime_Date` またはそのサブクラス (例えば `PyDateTime_DateTime`)の インスタンスでなければなりません。引数を `NULL` にしてはならず、 型チェックは行いません:

int `PyDateTime_GET_YEAR`( | PyDateTime_Date *o)

  年を正の整数で返します。 バージョン 2.4 で 新たに追加 された仕様です。

int `PyDateTime_GET_MONTH`( | PyDateTime_Date *o)

  月を 1 から 12 の間の整数で返します。 バージョン 2.4 で 新たに追加 された仕様です。

int `PyDateTime_GET_DAY`( | PyDateTime_Date *o)

  日を 1 から 31 の間の整数で返します。 バージョン 2.4 で 新たに追加 された仕様です。

以下のマクロは datetime オブジェクトからフィールド値を取り出すための ものです。引数は`PyDateTime_DateTime` またはそのサブクラスの インスタンスでなければなりません。引数を `NULL` にしてはならず、 型チェックは行いません:

int `PyDateTime_DATE_GET_HOUR`( | PyDateTime_DateTime *o)

  時を 0 から 23 の間の整数で返します。 バージョン 2.4 で 新たに追加 された仕様です。

int `PyDateTime_DATE_GET_MINUTE`( | PyDateTime_DateTime *o)

  分を 0 から 59 の間の整数で返します。 バージョン 2.4 で 新たに追加 された仕様です。

int `PyDateTime_DATE_GET_SECOND`( | PyDateTime_DateTime *o)

  秒を 0 から 59 の間の整数で返します。 バージョン 2.4 で 新たに追加 された仕様です。

int `PyDateTime_DATE_GET_MICROSECOND`( | PyDateTime_DateTime *o)

  マイクロ秒を 0 から 999999 の間の整数で返します。 バージョン 2.4 で 新たに追加 された仕様です。

以下のマクロは time オブジェクトからフィールド値を取り出すための ものです。引数は`PyDateTime_Time` またはそのサブクラスの インスタンスでなければなりません。引数を `NULL` にしてはならず、 型チェックは行いません:

int `PyDateTime_TIME_GET_HOUR`( | PyDateTime_Time *o)

  時を 0 から 23 の間の整数で返します。 バージョン 2.4 で 新たに追加 された仕様です。

int `PyDateTime_TIME_GET_MINUTE`( | PyDateTime_Time *o)

  分を 0 から 59 の間の整数で返します。 バージョン 2.4 で 新たに追加 された仕様です。

int `PyDateTime_TIME_GET_SECOND`( | PyDateTime_Time *o)

  秒を 0 から 59 の間の整数で返します。 バージョン 2.4 で 新たに追加 された仕様です。

int `PyDateTime_TIME_GET_MICROSECOND`( | PyDateTime_Time *o)

  マイクロ秒を 0 から 999999 の間の整数で返します。 バージョン 2.4 で 新たに追加 された仕様です。

以下のマクロは DB API を実装する上での便宜用です:

PyObject* `PyDateTime_FromTimestamp`( | PyObject *args)

  戻り値: 新たな参照.
  `dateitme.datetime.fromtimestamp()` に渡すのに適した引数タプルから 新たな `datetime.datetime` オブジェクトを生成して返します。 バージョン 2.4 で 新たに追加 された仕様です。

PyObject* `PyDate_FromTimestamp`( | PyObject *args)

  戻り値: 新たな参照.
  `dateitme.date.fromtimestamp()` に渡すのに適した引数タプルから 新たな `datetime.date` オブジェクトを生成して返します。 バージョン 2.4 で 新たに追加 された仕様です。