Objetos DateTime
****************

Vários objetos de data e hora são fornecidos pelo módulo "datetime".
Antes de usar qualquer uma dessas funções, o arquivo de cabeçalho
"datetime.h" deve ser incluído na sua fonte (observe que isso não é
incluído por "Python.h") e a macro "PyDateTime_IMPORT" deve ser
chamada, geralmente como parte da função de inicialização do módulo. A
macro coloca um ponteiro para uma estrutura C em uma variável
estática, "PyDateTimeAPI", usada pelas macros a seguir.

Macro para acesso ao singleton UTC:

PyObject* PyDateTime_TimeZone_UTC

   Retorna um singleton do fuso horário representando o UTC, o mesmo
   objeto que "datetime.timezone.utc".

   Novo na versão 3.7.

Macros de verificação de tipo:

int PyDate_Check(PyObject *ob)

   Retorna true se *ob* for do tipo "PyDateTime_DateType" ou um
   subtipo de "PyDateTime_DateType". *ob* não deve ser "NULL".

int PyDate_CheckExact(PyObject *ob)

   Retorna true se *ob* for do tipo "PyDateTime_DateType". *ob* não
   deve ser "NULL".

int PyDateTime_Check(PyObject *ob)

   Retorna true se *ob* é do tipo "PyDateTime_DateTimeType" ou um
   subtipo de "PyDateTime_DateTimeType". *ob* não deve ser "NULL".

int PyDateTime_CheckExact(PyObject *ob)

   Retorna true se *ob* é do tipo "PyDateTime_DateTimeType". *ob* não
   deve ser "NULL".

int PyTime_Check(PyObject *ob)

   Retorna true se *ob* é do tipo "PyDateTime_TimeType" ou um subtipo
   de "PyDateTime_TimeType".  *ob* não deve ser "NULL".

int PyTime_CheckExact(PyObject *ob)

   Retorna true se *ob* é do tipo "PyDateTime_TimeType". *ob* não deve
   ser "NULL".

int PyDelta_Check(PyObject *ob)

   Retorna true se *ob* é do tipo "PyDateTime_DeltaType" ou um subtipo
   de "PyDateTime_DeltaType".  *ob* não deve ser "NULL".

int PyDelta_CheckExact(PyObject *ob)

   Retorna true se *ob* é do tipo "PyDateTime_DeltaType". *ob* não
   deve ser "NULL".

int PyTZInfo_Check(PyObject *ob)

   Retorna true se *ob* é do tipo "PyDateTime_TZInfoType" ou um
   subtipo de "PyDateTime_TZInfoType".  *ob* não deve ser "NULL".

int PyTZInfo_CheckExact(PyObject *ob)

   Retorna true se *ob* é do tipo "PyDateTime_TZInfoType". *ob* não
   deve ser "NULL".

Macros para criar objetos:

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

   Retorna um objeto "datetime.date" com o ano, mês e dia
   especificados.

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

   Retorna um objeto "datetime.datetime" com o ano, mês, dia, hora,
   minuto, segundo, microssegundo 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 um objeto "datetime.datetime" com o ano, mês, dia, hora,
   minuto, segundo, microssegundo e a dobra especificados.

   Novo na versão 3.6.

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

   Retorna um objeto "datetime.time" com a hora, minuto, segundo e
   microssegundo especificados.

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

   Retorna um objeto "datetime.time" com a hora, minuto, segundo,
   microssegundo e a dobra especificados.

   Novo na versão 3.6.

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

   Retorna um objeto "datetime.timedelta" representando o número
   especificado de dias, segundos e microssegundos. A normalização é
   realizada para que o número resultante de microssegundos e segundos
   esteja nos intervalos documentados para objetos de
   "datetime.timedelta".

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

   Retorna um objeto "datetime.timezone" com um deslocamento fixo sem
   nome representado pelo argumento *offset*.

   Novo na versão 3.7.

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

   Retorna um objeto "datetime.timezone" com um deslocamento fixo
   representado pelo argumento *offset* e com tzname *name*.

   Novo na versão 3.7.

Macros para extrair campos de objetos de data. O argumento deve ser
uma instância de "PyDateTime_Date", incluindo subclasses (como
"PyDateTime_DateTime"). O argumento não deve ser "NULL" e o tipo não
está marcado:

int PyDateTime_GET_YEAR(PyDateTime_Date *o)

   Retorna o ano, como um inteiro positivo.

int PyDateTime_GET_MONTH(PyDateTime_Date *o)

   Retorna o mês, como um inteiro de 1 a 12.

int PyDateTime_GET_DAY(PyDateTime_Date *o)

   Retorna o dia, como um inteiro de 1 a 31.

Macros para extrair campos de objetos de data e hora. O argumento deve
ser uma instância de "PyDateTime_DateTime", incluindo subclasses. O
argumento não deve ser "NULL" e o tipo não é verificado:

int PyDateTime_DATE_GET_HOUR(PyDateTime_DateTime *o)

   Retorna a hora, como um inteiro de 0 a 23.

int PyDateTime_DATE_GET_MINUTE(PyDateTime_DateTime *o)

   Retorna o minuto, como um inteiro de 0 a 59.

int PyDateTime_DATE_GET_SECOND(PyDateTime_DateTime *o)

   Retorna o segundo, como um inteiro de 0 a 59.

int PyDateTime_DATE_GET_MICROSECOND(PyDateTime_DateTime *o)

   Retorna o microssegundo, como um inteiro de 0 a 999999.

int PyDateTime_DATE_GET_FOLD(PyDateTime_DateTime *o)

   Retorna a dobra, como um inteiro de 0 a 1.

   Novo na versão 3.6.

Macros para extrair campos de objetos de tempo. O argumento deve ser
uma instância de "PyDateTime_Time", incluindo subclasses. O argumento
não deve ser "NULL" e o tipo não é verificado:

int PyDateTime_TIME_GET_HOUR(PyDateTime_Time *o)

   Retorna a hora, como um inteiro de 0 a 23.

int PyDateTime_TIME_GET_MINUTE(PyDateTime_Time *o)

   Retorna o minuto, como um inteiro de 0 a 59.

int PyDateTime_TIME_GET_SECOND(PyDateTime_Time *o)

   Retorna o segundo, como um inteiro de 0 a 59.

int PyDateTime_TIME_GET_MICROSECOND(PyDateTime_Time *o)

   Retorna o microssegundo, como um inteiro de 0 a 999999.

int PyDateTime_TIME_GET_FOLD(PyDateTime_Time *o)

   Retorna a dobra, como um inteiro de 0 a 1.

   Novo na versão 3.6.

Macros para extrair campos de objetos time delta. O argumento deve ser
uma instância de "PyDateTime_Delta", incluindo subclasses. O argumento
não deve ser "NULL", e o tipo não é checado:

int PyDateTime_DELTA_GET_DAYS(PyDateTime_Delta *o)

   Retorna o número de dias, como um inteiro de -999999999 a
   999999999.

   Novo na versão 3.3.

int PyDateTime_DELTA_GET_SECONDS(PyDateTime_Delta *o)

   Retorna o número de segundos, como um inteiro de 0 a 86399.

   Novo na versão 3.3.

int PyDateTime_DELTA_GET_MICROSECONDS(PyDateTime_Delta *o)

   Retorna o número de microssegundos, como um inteiro de 0 a 999999.

   Novo na versão 3.3.

Macros para a conveniência de módulos implementando a API de DB:

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

   Cria e retorna um novo objeto "datetime.datetime", com uma tupla de
   argumentos adequada para passar para
   "datetime.datetime.fromtimestamp()".

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

   Cria e retorna um novo objeto "datetime.date", com uma tupla de
   argumentos adequada para passar para
   "datetime.date.fromtimestamp()".
