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.

type PyDateTime_Date

   Este subtipo de "PyObject" representa un *date object* de Python.

type PyDateTime_DateTime

   Este subtipo de "PyObject" representa un *datetime object* de
   Python.

type PyDateTime_Time

   Este subtipo de "PyObject" representa un *time object* de Python.

type PyDateTime_Delta

   Este subtipo de "PyObject" representa la diferencia entre dos
   valores *datetime*.

PyTypeObject PyDateTime_DateType

   Esta instancia de "PyTypeObject" representa el *date type* de
   Python; es el mismo objecto que que "datetime.date" en la capa de
   Python.

PyTypeObject PyDateTime_DateTimeType

   Esta instancia de "PyTypeObject" representa el *datetime type* de
   Python; es el mismo objecto que que "datetime.datetime" en la capa
   de Python.

PyTypeObject PyDateTime_TimeType

   Esta instancia de "PyObject" representa el *time type* de Python;
   es el mismo objecto que que "datetime.time" en la capa de Python.

PyTypeObject PyDateTime_DeltaType

   Esta instancia de "PyTypeObject" representa un tipo en *Python*
   para la diferencia entre dos valore *datetime*; es el mismo objeto
   que "datetime.timedelta" en la capa de Python.

PyTypeObject PyDateTime_TZInfoType

   Esta instancia de "PyTypeObject" representa el tipo de Python de
   *time zone info*; es el mismo objeto que "datetime.tzinfo" de la
   capa de Python.

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".

   Added in version 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". Esta
   función siempre finaliza con éxito.

int PyDate_CheckExact(PyObject *ob)

   Retorna verdadero si *ob* es de tipo "PyDateTime_DateType". *ob* no
   debe ser "NULL". Esta función siempre finaliza con éxito.

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". Esta
   función siempre finaliza con éxito.

int PyDateTime_CheckExact(PyObject *ob)

   Retorna verdadero si *ob* es de tipo "PyDateTime_DateTimeType".
   *ob* no debe ser "NULL". Esta función siempre finaliza con éxito.

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". Esta
   función siempre finaliza con éxito.

int PyTime_CheckExact(PyObject *ob)

   Retorna verdadero si *ob* es de tipo "PyDateTime_TimeType". *ob* no
   debe ser "NULL". Esta función siempre finaliza con éxito.

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". Esta
   función siempre finaliza con éxito.

int PyDelta_CheckExact(PyObject *ob)

   Retorna verdadero si *ob* es de tipo "PyDateTime_DeltaType". *ob*
   no debe ser "NULL". Esta función siempre finaliza con éxito.

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". Esta
   función siempre finaliza con éxito.

int PyTZInfo_CheckExact(PyObject *ob)

   Retorna verdadero si *ob* es de tipo "PyDateTime_TZInfoType". *ob*
   no debe ser "NULL". Esta función siempre finaliza con éxito.

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.

   Added in version 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.

   Added in version 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(PyObject *offset)
    *Return value: New reference.*

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

   Added in version 3.7.

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

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

   Added in version 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
se comprueba.

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)

   Retorna el *fold*, como int de 0 a 1.

   Added in version 3.6.

PyObject *PyDateTime_DATE_GET_TZINFO(PyDateTime_DateTime *o)

   Retorna el tzinfo (que puede ser "None").

   Added in version 3.10.

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 es comprobado:

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)

   Retorna el *fold*, como int de 0 a 1.

   Added in version 3.6.

PyObject *PyDateTime_TIME_GET_TZINFO(PyDateTime_Time *o)

   Retorna el tzinfo (que puede ser "None").

   Added in version 3.10.

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 es comprobado:

int PyDateTime_DELTA_GET_DAYS(PyDateTime_Delta *o)

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

   Added in version 3.3.

int PyDateTime_DELTA_GET_SECONDS(PyDateTime_Delta *o)

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

   Added in version 3.3.

int PyDateTime_DELTA_GET_MICROSECONDS(PyDateTime_Delta *o)

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

   Added in version 3.3.

Macros para la conveniencia de módulos que implementan la 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()".
