# Objets DateTime

De nombreux objets date et time sont exposés par le module `DateTime`. Avant d’utiliser une de ces fonctions, le fichier d’en-tête `datetime.h` doit être inclus dans vos sources (veuillez noter qu’il n’est pas inclus par le fichier `Python.h`) et la macro `PyDateTime_IMPORT` doit-être invoquée, généralement lors de la fonction d’initialisation du module. La macro crée un pointeur vers une structure C et place celui-ci dans une variable statique, `PyDateTimeAPI`, qui est utilisée par les macros suivantes.

Macros pour vérifier les types :

int `PyDate_Check`(PyObject *ob)

  Renvoie vrai si ob est de type `PyDateTime_DateType` ou un sous-type de `PyDateTime_DateType`. ob ne doit pas être NULL.

int `PyDate_CheckExact`(PyObject *ob)

  Renvoie vrai si ob est de type `PyDateTime_DateType`. ob ne doit pas être NULL.

int `PyDateTime_Check`(PyObject *ob)

  Renvoie vrai si ob est de type `PyDateTime_DateTimeType` ou un sous-type de `PyDateTime_DateTimeType`. ob ne doit pas être NULL.

int `PyDateTime_CheckExact`(PyObject *ob)

  Renvoie vrai si ob est de type `PyDateTime_DateTimeType`. ob ne doit pas être NULL.

int `PyTime_Check`(PyObject *ob)

  Renvoie vrai si ob est de type `PyDateTime_TimeType` ou un sous-type de `PyDateTime_TimeType`. ob ne doit pas être NULL.

int `PyTime_CheckExact`(PyObject *ob)

  Renvoie vrai si ob est de type `PyDateTime_TimeType`. ob ne doit pas être NULL.

int `PyDelta_Check`(PyObject *ob)

  Renvoie vrai si ob est de type `PyDateTime_DeltaType` ou un sous-type de `PyDateTime_DeltaType`. ob ne doit pas être NULL.

int `PyDelta_CheckExact`(PyObject *ob)

  Renvoie vrai si ob est de type `PyDateTime_DeltaType`. ob ne doit pas être NULL.

int `PyTZInfo_Check`(PyObject *ob)

  Renvoie vrai si ob est de type `PyDateTime_TZInfoType` ou un sous-type de `PyDateTime_TZInfoType`. ob ne doit pas être NULL.

int `PyTZInfo_CheckExact`(PyObject *ob)

  Renvoie vrai si ob est de type `PyDateTime_TZInfoType`. ob ne doit pas être NULL.

Macros pour créer des objets :

PyObject* `PyDate_FromDate`(int year, int month, int day)
  Return value: New reference.

  Return a `datetime.date` object with the specified year, month and day.

PyObject* `PyDateTime_FromDateAndTime`(int year, int month, int day, int hour, int minute, int second, int usecond)
  Return value: New reference.

  Return a `datetime.datetime` object with the specified year, month, day, hour, minute, second and microsecond.

PyObject* `PyTime_FromTime`(int hour, int minute, int second, int usecond)
  Return value: New reference.

  Return a `datetime.time` object with the specified hour, minute, second and microsecond.

PyObject* `PyDelta_FromDSU`(int days, int seconds, int useconds)
  Return value: New reference.

  Return a `datetime.timedelta` object representing the given number of days, seconds and microseconds. Normalization is performed so that the resulting number of microseconds and seconds lie in the ranges documented for `datetime.timedelta` objects.

Macros pour extraire les champs des objets date. L’argument doit être une instance de `PyDateTime_Date`, ou une sous-classe (telle que `PyDateTime_DateTime`). L’argument ne doit pas être NULL, et le type n’est pas vérifié :

int `PyDateTime_GET_YEAR`(PyDateTime_Date *o)

  Renvoie l’année, sous forme d’entier positif.

int `PyDateTime_GET_MONTH`(PyDateTime_Date *o)

  Renvoie le mois, sous forme d’entier allant de 1 à 12.

int `PyDateTime_GET_DAY`(PyDateTime_Date *o)

  Renvoie le jour, sous forme d’entier allant de 1 à 31.

Macros pour extraire les champs des objets datetime. L’argument doit être une instance de `PyDateTime_DateTime` ou une sous-classe de celle-ci. L’argument ne doit pas être NULL, et le type n’est pas vérifié :

int `PyDateTime_DATE_GET_HOUR`(PyDateTime_DateTime *o)

  Renvoie l’heure, sous forme d’entier allant de 0 à 23.

int `PyDateTime_DATE_GET_MINUTE`(PyDateTime_DateTime *o)

  Renvoie la minute, sous forme d’entier allant de 0 à 59.

int `PyDateTime_DATE_GET_SECOND`(PyDateTime_DateTime *o)

  Renvoie la seconde, sous forme d’entier allant de 0 à 59.

int `PyDateTime_DATE_GET_MICROSECOND`(PyDateTime_DateTime *o)

  Renvoie la microseconde, sous forme d’entier allant de 0 à 999999.

Macros pour extraire les champs des objets time. L’argument doit être une instance de `PyDateTime_Time` ou une sous-classe de celle-ci. L’argument ne doit pas être NULL, et le type n’est pas vérifié :

int `PyDateTime_TIME_GET_HOUR`(PyDateTime_Time *o)

  Renvoie l’heure, sous forme d’entier allant de 0 à 23.

int `PyDateTime_TIME_GET_MINUTE`(PyDateTime_Time *o)

  Renvoie la minute, sous forme d’entier allant de 0 à 59.

int `PyDateTime_TIME_GET_SECOND`(PyDateTime_Time *o)

  Renvoie la seconde, sous forme d’entier allant de 0 à 59.

int `PyDateTime_TIME_GET_MICROSECOND`(PyDateTime_Time *o)

  Renvoie la microseconde, sous forme d’entier allant de 0 à 999999.

Macros pour extraire les champs des objets time delta. L’argument doit être une instance de `PyDateTime_Delta` ou une sous-classe de celle-ci. L’argument ne doit pas être NULL, et le type n’est pas vérifié :

int `PyDateTime_DELTA_GET_DAYS`(PyDateTime_Delta *o)

  Renvoie le nombre de jours, sous forme d’entier allant de -999999999 à 999999999.

  Nouveau dans la version 3.3.

int `PyDateTime_DELTA_GET_SECONDS`(PyDateTime_Delta *o)

  Renvoie le nombre de secondes sous forme d’entier allant de 0 à 86399.

  Nouveau dans la version 3.3.

int `PyDateTime_DELTA_GET_MICROSECONDS`(PyDateTime_Delta *o)

  Renvoie le nombre de microsecondes, sous forme d’entier allant de 0 à 999999.

  Nouveau dans la version 3.3.

Macros de confort pour les modules implémentant l’API DB :

PyObject* `PyDateTime_FromTimestamp`(PyObject *args)
  Return value: New reference.

  Create and return a new `datetime.datetime` object given an argument tuple suitable for passing to `datetime.datetime.fromtimestamp()`.

PyObject* `PyDate_FromTimestamp`(PyObject *args)
  Return value: New reference.

  Create and return a new `datetime.date` object given an argument tuple suitable for passing to `datetime.date.fromtimestamp()`.