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.

Macros de verificação de tipo:

int PyDate_Check(PyObject *ob)

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

int PyDate_CheckExact(PyObject *ob)

   Retorna verdadeiro se *ob* é do tipo "PyDateTime_DateType". *ob*
   não deve ser *NULL*.

int PyDateTime_Check(PyObject *ob)

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

int PyDateTime_CheckExact(PyObject *ob)

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

int PyTime_Check(PyObject *ob)

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

int PyTime_CheckExact(PyObject *ob)

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

int PyDelta_Check(PyObject *ob)

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

int PyDelta_CheckExact(PyObject *ob)

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

int PyTZInfo_Check(PyObject *ob)

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

int PyTZInfo_CheckExact(PyObject *ob)

   Retorna verdadeiro 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.*

   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 para extrair campos de objetos date. O argumento deve ser uma
instância de "PyDateTime_Date", incluindo subclasses (tal qual
"PyDateTime_DateTime"). O argumento não deve ser *NULL*, e o tipo não
é checado:

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 datetime. O argumento deve ser
uma instância de "PyDateTime_DateTime", incluindo subclasses. O
argumento não deve ser *NULL*, e o tipo não é checado:

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.

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

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.

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

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