Объекты даты и времени¶
Различные объекты даты и времени предоставляются модулем datetime
. Перед использованием любой из этих функций в исходный код должен быть включен заголовочный файл datetime.h
(обратите внимание, что он не включен в Python.h
), а также должен быть вызван макрос PyDateTime_IMPORT
, обычно как часть функция инициализации модуля. Макрос помещает указатель на структуру C в статическую переменную PyDateTimeAPI
, которая используется следующими макросами.
-
type PyDateTime_Delta¶
Этот подтип
PyObject
представляет собой разницу между двумя значениями даты и времени.
-
PyTypeObject PyDateTime_DateType¶
Этот экземпляр
PyTypeObject
представляет тип данных Python; это тот же объект, что иdatetime.date
на уровне Python.
-
PyTypeObject PyDateTime_DateTimeType¶
Этот экземпляр
PyTypeObject
представляет тип Python datetime; это тот же объект, что иdatetime.datetime
на уровне Python.
-
PyTypeObject PyDateTime_TimeType¶
Этот экземпляр
PyTypeObject
представляет тип времени Python; это тот же объект, что иdatetime.time
на уровне Python.
-
PyTypeObject PyDateTime_DeltaType¶
Этот экземпляр
PyTypeObject
представляет тип Python для разности между двумя значениями даты и времени; это тот же объект, что иdatetime.timedelta
на уровне Python.
-
PyTypeObject PyDateTime_TZInfoType¶
Этот экземпляр
PyTypeObject
представляет информационный тип часового пояса Python; это тот же объект, что иdatetime.tzinfo
на уровне Python.
Макрос для доступа к синглтону UTC:
-
PyObject *PyDateTime_TimeZone_UTC¶
Возвращает синглтон часового пояса, представляющий UTC, тот же объект, что и
datetime.timezone.utc
.Добавлено в версии 3.7.
Макросы для проверки типа:
-
int PyDate_Check(PyObject *ob)¶
Возвращает значение true, если ob имеет тип
PyDateTime_DateType
или подтипPyDateTime_DateType
. ob не должен бытьNULL
. Эта функция всегда выполняется успешно.
-
int PyDate_CheckExact(PyObject *ob)¶
Возвращает значение true, если значение ob имеет тип
PyDateTime_DateType
. Значение ob не должно бытьNULL
. Эта функция всегда выполняется успешно.
-
int PyDateTime_Check(PyObject *ob)¶
Возвращает значение true, если ob имеет тип
PyDateTime_DateTimeType
или подтипPyDateTime_DateTimeType
. ob не должен бытьNULL
. Эта функция всегда выполняется успешно.
-
int PyDateTime_CheckExact(PyObject *ob)¶
Возвращает значение true, если значение ob имеет тип
PyDateTime_DateTimeType
. Значение ob не должно бытьNULL
. Эта функция всегда выполняется успешно.
-
int PyTime_Check(PyObject *ob)¶
Возвращает значение true, если ob имеет тип
PyDateTime_TimeType
или подтипPyDateTime_TimeType
. ob не должен бытьNULL
. Эта функция всегда выполняется успешно.
-
int PyTime_CheckExact(PyObject *ob)¶
Возвращает значение true, если значение ob имеет тип
PyDateTime_TimeType
. Значение ob не должно бытьNULL
. Эта функция всегда выполняется успешно.
-
int PyDelta_Check(PyObject *ob)¶
Возвращает значение true, если ob имеет тип
PyDateTime_DeltaType
или подтипPyDateTime_DeltaType
. ob не должен бытьNULL
. Эта функция всегда выполняется успешно.
-
int PyDelta_CheckExact(PyObject *ob)¶
Возвращает значение true, если значение ob имеет тип
PyDateTime_DeltaType
. Значение ob не должно бытьNULL
. Эта функция всегда выполняется успешно.
-
int PyTZInfo_Check(PyObject *ob)¶
Возвращает значение true, если ob имеет тип
PyDateTime_TZInfoType
или подтипPyDateTime_TZInfoType
. ob не должен бытьNULL
. Эта функция всегда выполняется успешно.
-
int PyTZInfo_CheckExact(PyObject *ob)¶
Возвращает значение true, если значение ob имеет тип
PyDateTime_TZInfoType
. Значение ob не должно бытьNULL
. Эта функция всегда выполняется успешно.
Макросы для создания объектов:
-
PyObject *PyDate_FromDate(int year, int month, int day)¶
- Возвращаемое значение: Новая ссылка.
Возвращает объект
datetime.date
с указанными годом, месяцем и днем.
-
PyObject *PyDateTime_FromDateAndTime(int year, int month, int day, int hour, int minute, int second, int usecond)¶
- Возвращаемое значение: Новая ссылка.
Возвращает объект
datetime.datetime
с указанными годом, месяцем, днем, часом, минутой, секундой и микросекундой.
-
PyObject *PyDateTime_FromDateAndTimeAndFold(int year, int month, int day, int hour, int minute, int second, int usecond, int fold)¶
- Возвращаемое значение: Новая ссылка.
Возвращает объект
datetime.datetime
с указанными годом, месяцем, днем, часом, минутой, секундой, микросекундой и кратностью.Добавлено в версии 3.6.
-
PyObject *PyTime_FromTime(int hour, int minute, int second, int usecond)¶
- Возвращаемое значение: Новая ссылка.
Возвращает объект
datetime.time
с указанными часами, минутами, секундами и микросекундами.
-
PyObject *PyTime_FromTimeAndFold(int hour, int minute, int second, int usecond, int fold)¶
- Возвращаемое значение: Новая ссылка.
Возвращает объект
datetime.time
с указанными часами, минутами, секундами, микросекундами и кратностью.Добавлено в версии 3.6.
-
PyObject *PyDelta_FromDSU(int days, int seconds, int useconds)¶
- Возвращаемое значение: Новая ссылка.
Возвращает объект
datetime.timedelta
, представляющий заданное количество дней, секунд и микросекунд. Нормализация выполняется таким образом, чтобы результирующее количество микросекунд и секунд находилось в диапазонах, задокументированных для объектовdatetime.timedelta
.
-
PyObject *PyTimeZone_FromOffset(PyObject *offset)¶
- Возвращаемое значение: Новая ссылка.
Возвращает объект
datetime.timezone
с неназванным фиксированным смещением, представленным аргументом offset.Добавлено в версии 3.7.
-
PyObject *PyTimeZone_FromOffsetAndName(PyObject *offset, PyObject *name)¶
- Возвращаемое значение: Новая ссылка.
Возвращает объект
datetime.timezone
с фиксированным смещением, представленным аргументом offset, и с tzname именем.Добавлено в версии 3.7.
Макросы для извлечения полей из объектов данных. Аргумент должен быть экземпляром PyDateTime_Date
, включая подклассы (такие как PyDateTime_DateTime
). Аргумент не должен быть NULL
, и тип не проверяется:
-
int PyDateTime_GET_YEAR(PyDateTime_Date *o)¶
Возвращает год в виде целого положительного числа.
-
int PyDateTime_GET_MONTH(PyDateTime_Date *o)¶
Возвращает месяц в виде числа int от 1 до 12.
-
int PyDateTime_GET_DAY(PyDateTime_Date *o)¶
Возвращает день в виде числа от 1 до 31.
Макросы для извлечения полей из объектов datetime. Аргумент должен быть экземпляром PyDateTime_DateTime
, включая подклассы. Аргумент не должен быть NULL
, и тип не проверяется:
-
int PyDateTime_DATE_GET_HOUR(PyDateTime_DateTime *o)¶
Возвращает значение часа в виде значения int от 0 до 23.
-
int PyDateTime_DATE_GET_MINUTE(PyDateTime_DateTime *o)¶
Возвращает значение минуты в виде числа int от 0 до 59.
-
int PyDateTime_DATE_GET_SECOND(PyDateTime_DateTime *o)¶
Возвращает второе значение в виде int от 0 до 59.
-
int PyDateTime_DATE_GET_MICROSECOND(PyDateTime_DateTime *o)¶
Возвращает микросекунду в виде значения int от 0 до 999999.
-
int PyDateTime_DATE_GET_FOLD(PyDateTime_DateTime *o)¶
Верните значение fold в виде int от 0 до 1.
Добавлено в версии 3.6.
-
PyObject *PyDateTime_DATE_GET_TZINFO(PyDateTime_DateTime *o)¶
Верните tzinfo (который может быть
None
).Добавлено в версии 3.10.
Макросы для извлечения полей из объектов time. Аргумент должен быть экземпляром PyDateTime_Time
, включая подклассы. Аргумент не должен быть NULL
, и тип не проверяется:
-
int PyDateTime_TIME_GET_HOUR(PyDateTime_Time *o)¶
Возвращает значение часа в виде значения int от 0 до 23.
-
int PyDateTime_TIME_GET_MINUTE(PyDateTime_Time *o)¶
Возвращает значение минуты в виде числа int от 0 до 59.
-
int PyDateTime_TIME_GET_SECOND(PyDateTime_Time *o)¶
Возвращает второе значение в виде int от 0 до 59.
-
int PyDateTime_TIME_GET_MICROSECOND(PyDateTime_Time *o)¶
Возвращает микросекунду в виде значения int от 0 до 999999.
-
int PyDateTime_TIME_GET_FOLD(PyDateTime_Time *o)¶
Верните значение fold в виде int от 0 до 1.
Добавлено в версии 3.6.
-
PyObject *PyDateTime_TIME_GET_TZINFO(PyDateTime_Time *o)¶
Верните tzinfo (который может быть
None
).Добавлено в версии 3.10.
Макросы для извлечения полей из объектов timedelta. Аргумент должен быть экземпляром PyDateTime_Delta
, включая подклассы. Аргумент не должен быть NULL
, и тип не проверяется:
-
int PyDateTime_DELTA_GET_DAYS(PyDateTime_Delta *o)¶
Возвращает количество дней в виде значения int от -9999999999 до 9999999999.
Добавлено в версии 3.3.
-
int PyDateTime_DELTA_GET_SECONDS(PyDateTime_Delta *o)¶
Возвращает количество секунд в виде int от 0 до 86399.
Добавлено в версии 3.3.
-
int PyDateTime_DELTA_GET_MICROSECONDS(PyDateTime_Delta *o)¶
Возвращает количество микросекунд в виде int от 0 до 999999.
Добавлено в версии 3.3.
Макросы для удобства работы модулей, реализующих DB API:
-
PyObject *PyDateTime_FromTimestamp(PyObject *args)¶
- Возвращаемое значение: Новая ссылка.
Создайте и верните новый объект
datetime.datetime
с заданным кортежем аргументов, подходящим для передачи вdatetime.datetime.fromtimestamp()
.
-
PyObject *PyDate_FromTimestamp(PyObject *args)¶
- Возвращаемое значение: Новая ссылка.
Создайте и верните новый объект
datetime.date
с заданным кортежем аргументов, подходящим для передачи вdatetime.date.fromtimestamp()
.