# Objetos DateTime

El módulo `datetime` proporciona varios objetos de fecha y hora. Antes de usar cualquiera de estas funciones, el archivo de encabezado `datetime.h` debe estar incluido en su fuente (tenga en cuenta que esto no está incluido en el archivo `Python.h`), y la macro `PyDateTime_IMPORT` debe llamarse, generalmente como parte de la función de inicialización del módulo. La macro coloca un puntero a una estructura C en una variable estática, `PyDateTimeAPI`, que utilizan las siguientes macros.

Macro para acceder al singleton UTC:

PyObject* `PyDateTime_TimeZone_UTC`

  Retorna la zona horaria singleton que representa UTC, el mismo objeto que `datetime.timezone.utc`.

  Nuevo en la versión 3.7.

Macros de verificación de tipo:

int `PyDate_Check`(PyObject *ob)

  Retorna verdadero si ob es de tipo `PyDateTime_DateType` o un subtipo de `PyDateTime_DateType`. ob no debe ser `NULL`.

int `PyDate_CheckExact`(PyObject *ob)

  Retorna verdadero si ob es de tipo `PyDateTime_DateType`. ob no debe ser `NULL`.

int `PyDateTime_Check`(PyObject *ob)

  Retorna verdadero si ob es de tipo `PyDateTime_DateTimeType` o un subtipo de `PyDateTime_DateTimeType`. ob no debe ser `NULL`.

int `PyDateTime_CheckExact`(PyObject *ob)

  Retorna verdadero si ob es de tipo `PyDateTime_DateTimeType`. ob no debe ser `NULL`.

int `PyTime_Check`(PyObject *ob)

  Retorna verdadero si ob es de tipo `PyDateTime_TimeType` o un subtipo de `PyDateTime_TimeType`. ob no debe ser `NULL`.

int `PyTime_CheckExact`(PyObject *ob)

  Retorna verdadero si ob es de tipo `PyDateTime_TimeType`. ob no debe ser `NULL`.

int `PyDelta_Check`(PyObject *ob)

  Retorna verdadero si ob es de tipo `PyDateTime_DeltaType` o un subtipo de `PyDateTime_DeltaType`. ob no debe ser `NULL`.

int `PyDelta_CheckExact`(PyObject *ob)

  Retorna verdadero si ob es de tipo `PyDateTime_DeltaType`. ob no debe ser `NULL`.

int `PyTZInfo_Check`(PyObject *ob)

  Retorna verdadero si ob es de tipo `PyDateTime_TZInfoType` o un subtipo de `PyDateTime_TZInfoType`. ob no debe ser `NULL`.

int `PyTZInfo_CheckExact`(PyObject *ob)

  Retorna verdadero si ob es de tipo `PyDateTime_TZInfoType`. ob no debe ser `NULL`.

Macros para crear objetos:

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

  Retorna un objeto `datetime.date` con el año, mes y día especificados.

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

  Retorna un objeto `datetime.datetime` con el año, mes, día, hora, minuto, segundo y micro segundo especificados.

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

  Retorna un objeto `datetime.datetime` con el año, mes, día, hora, minuto, segundo, micro segundo y doblez especificados.

  Nuevo en la versión 3.6.

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

  Retorna un objeto `datetime.time` con la hora, minuto, segundo y micro segundo especificados.

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

  Retorna un objeto `datetime.time` con la hora, minuto, segundo, micro segundo y doblez especificados.

  Nuevo en la versión 3.6.

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

  Retorna un objeto `datetime.timedelta` que representa el número dado de días, segundos y micro segundos. La normalización se realiza de modo que el número resultante de micro segundos y segundos se encuentre en los rangos documentados para los objetos `datetime.timedelta`.

PyObject* `PyTimeZone_FromOffset`(PyDateTime_DeltaType* offset)
  Return value: New reference.

  Retorna un objeto `datetime.timezone` con un desplazamiento fijo sin nombre representado por el argumento offset.

  Nuevo en la versión 3.7.

PyObject* `PyTimeZone_FromOffsetAndName`(PyDateTime_DeltaType* offset, PyUnicode* name)
  Return value: New reference.

  Retorna un objeto `datetime.timezone` con un desplazamiento fijo representado por el argumento offset y con tzname name.

  Nuevo en la versión 3.7.

Macros para extraer campos de objetos de fecha. El argumento debe ser una instancia de `PyDateTime_Date`, incluidas las subclases (como `PyDateTime_DateTime`). El argumento no debe ser `NULL` y el tipo no está marcado:

int `PyDateTime_GET_YEAR`(PyDateTime_Date *o)

  Regrese el año, como un int positivo.

int `PyDateTime_GET_MONTH`(PyDateTime_Date *o)

  Regresa el mes, como int del 1 al 12.

int `PyDateTime_GET_DAY`(PyDateTime_Date *o)

  Retorna el día, como int del 1 al 31.

Macros para extraer campos de objetos de fecha y hora. El argumento debe ser una instancia de `PyDateTime_DateTime`, incluidas las subclases. El argumento no debe ser `NULL` y el tipo no es comprobado:

int `PyDateTime_DATE_GET_HOUR`(PyDateTime_DateTime *o)

  Retorna la hora, como un int de 0 hasta 23.

int `PyDateTime_DATE_GET_MINUTE`(PyDateTime_DateTime *o)

  Retorna el minuto, como un int de 0 hasta 59.

int `PyDateTime_DATE_GET_SECOND`(PyDateTime_DateTime *o)

  Retorna el segundo, como un int de 0 hasta 59.

int `PyDateTime_DATE_GET_MICROSECOND`(PyDateTime_DateTime *o)

  Retorna el micro segundo, como un int de 0 hasta 999999.

int `PyDateTime_DATE_GET_FOLD`(PyDateTime_DateTime *o)

  Return the fold, as an int from 0 through 1.

  Nuevo en la versión 3.6.

Macros para extraer campos de objetos de tiempo. El argumento debe ser una instancia de `PyDateTime_Time`, incluidas las subclases. El argumento no debe ser `NULL` y el tipo no está marcado:

int `PyDateTime_TIME_GET_HOUR`(PyDateTime_Time *o)

  Retorna la hora, como un int de 0 hasta 23.

int `PyDateTime_TIME_GET_MINUTE`(PyDateTime_Time *o)

  Retorna el minuto, como un int de 0 hasta 59.

int `PyDateTime_TIME_GET_SECOND`(PyDateTime_Time *o)

  Retorna el segundo, como un int de 0 hasta 59.

int `PyDateTime_TIME_GET_MICROSECOND`(PyDateTime_Time *o)

  Retorna el micro segundo, como un int de 0 hasta 999999.

int `PyDateTime_TIME_GET_FOLD`(PyDateTime_Time *o)

  Return the fold, as an int from 0 through 1.

  Nuevo en la versión 3.6.

Macros para extraer campos de objetos delta de tiempo. El argumento debe ser una instancia de `PyDateTime_Delta`, incluidas las subclases. El argumento no debe ser `NULL` y el tipo no está marcado:

int `PyDateTime_DELTA_GET_DAYS`(PyDateTime_Delta *o)

  Retorna el número de días, como un int desde -999999999 a 999999999.

  Nuevo en la versión 3.3.

int `PyDateTime_DELTA_GET_SECONDS`(PyDateTime_Delta *o)

  Retorna el número de segundos, como un int de 0 a 86399.

  Nuevo en la versión 3.3.

int `PyDateTime_DELTA_GET_MICROSECONDS`(PyDateTime_Delta *o)

  Retorna el número de micro segundos, como un int de 0 a 999999.

  Nuevo en la versión 3.3.

Macros para la conveniencia de módulos que implementan la API DB:

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

  Crea y retorna un nuevo objeto `datetime.datetime` dado una tupla de argumentos adecuada para pasar a `datetime.datetime.fromtimestamp()`.

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

  Crea y retorna un nuevo objeto `datetime.date` dado una tupla de argumentos adecuada para pasar a `datetime.date.fromtimestamp()`.