> **Источник:** https://python-all.ru/3.0/c-api/datetime.html
>
> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.

---

# Объекты даты и времени

Различные объекты даты и времени предоставляются модулем [`datetime`](https://python-all.ru/3.0/library/datetime.html#module-datetime). Перед использованием любой из этих функций заголовочный файл `datetime.h` должен быть включён в исходный код (обратите внимание, что этот файл не включается `Python.h`), и должен быть вызван макрос `PyDateTime_IMPORT`. Макрос помещает указатель на C-структуру в статическую переменную `PyDateTimeAPI`, которая используется следующими макросами.

Макросы проверки типа:

**\[PyDate\_Check\]int `PyDate_Check`([PyObject](https://python-all.ru/3.0/c-api/structures.html#PyObject) *\*ob*)**

Возвращает истину, если

*ob*

имеет тип

`PyDateTime_DateType`

или является подтипом

`PyDateTime_DateType`

.

*ob*

не должен быть

*NULL*

.

**\[PyDate\_CheckExact\]int `PyDate_CheckExact`([PyObject](https://python-all.ru/3.0/c-api/structures.html#PyObject) *\*ob*)**

Возвращает истину, если

*ob*

имеет тип

`PyDateTime_DateType`

.

*ob*

не должен быть

*NULL*

.

**\[PyDateTime\_Check\]int `PyDateTime_Check`([PyObject](https://python-all.ru/3.0/c-api/structures.html#PyObject) *\*ob*)**

Возвращает истину, если

*ob*

имеет тип

`PyDateTime_DateTimeType`

или является подтипом

`PyDateTime_DateTimeType`

.

*ob*

не должен быть

*NULL*

.

**\[PyDateTime\_CheckExact\]int `PyDateTime_CheckExact`([PyObject](https://python-all.ru/3.0/c-api/structures.html#PyObject) *\*ob*)**

Возвращает истину, если

*ob*

имеет тип

`PyDateTime_DateTimeType`

.

*ob*

не должен быть

*NULL*

.

**\[PyTime\_Check\]int `PyTime_Check`([PyObject](https://python-all.ru/3.0/c-api/structures.html#PyObject) *\*ob*)**

Возвращает истину, если

*ob*

имеет тип

`PyDateTime_TimeType`

или является подтипом

`PyDateTime_TimeType`

.

*ob*

не должен быть

*NULL*

.

**\[PyTime\_CheckExact\]int `PyTime_CheckExact`([PyObject](https://python-all.ru/3.0/c-api/structures.html#PyObject) *\*ob*)**

Возвращает истину, если

*ob*

имеет тип

`PyDateTime_TimeType`

.

*ob*

не должен быть

*NULL*

.

**\[PyDelta\_Check\]int `PyDelta_Check`([PyObject](https://python-all.ru/3.0/c-api/structures.html#PyObject) *\*ob*)**

Возвращает истину, если

*ob*

имеет тип

`PyDateTime_DeltaType`

или является подтипом

`PyDateTime_DeltaType`

.

*ob*

не должен быть

*NULL*

.

**\[PyDelta\_CheckExact\]int `PyDelta_CheckExact`([PyObject](https://python-all.ru/3.0/c-api/structures.html#PyObject) *\*ob*)**

Возвращает истину, если

*ob*

имеет тип

`PyDateTime_DeltaType`

.

*ob*

не должен быть

*NULL*

.

**\[PyTZInfo\_Check\]int `PyTZInfo_Check`([PyObject](https://python-all.ru/3.0/c-api/structures.html#PyObject) *\*ob*)**

Возвращает истину, если

*ob*

имеет тип

`PyDateTime_TZInfoType`

или является подтипом

`PyDateTime_TZInfoType`

.

*ob*

не должен быть

*NULL*

.

**\[PyTZInfo\_CheckExact\]int `PyTZInfo_CheckExact`([PyObject](https://python-all.ru/3.0/c-api/structures.html#PyObject) *\*ob*)**

Возвращает истину, если

*ob*

имеет тип

`PyDateTime_TZInfoType`

.

*ob*

не должен быть

*NULL*

.

Макросы для создания объектов:

**\[PyDate\_FromDate\][PyObject](https://python-all.ru/3.0/c-api/structures.html#PyObject)\* `PyDate_FromDate`(int *year*, int *month*, int *day*)**

*Возвращаемое значение: новая ссылка.*

Возвращает объект `datetime.date` с указанными годом, месяцем и днём.

**\[PyDateTime\_FromDateAndTime\][PyObject](https://python-all.ru/3.0/c-api/structures.html#PyObject)\* `PyDateTime_FromDateAndTime`(int *year*, int *month*, int *day*, int *hour*, int *minute*, int *second*, int *usecond*)**

*Возвращаемое значение: новая ссылка.*

Возвращает объект `datetime.datetime` с указанными годом, месяцем, днём, часом, минутой, секундой и микросекундой.

**\[PyTime\_FromTime\][PyObject](https://python-all.ru/3.0/c-api/structures.html#PyObject)\* `PyTime_FromTime`(int *hour*, int *minute*, int *second*, int *usecond*)**

*Возвращаемое значение: новая ссылка.*

Возвращает объект `datetime.time` с указанными часом, минутой, секундой и микросекундой.

**\[PyDelta\_FromDSU\][PyObject](https://python-all.ru/3.0/c-api/structures.html#PyObject)\* `PyDelta_FromDSU`(int *days*, int *seconds*, int *useconds*)**

*Возвращаемое значение: новая ссылка.*

Возвращает объект `datetime.timedelta`, представляющий заданное количество дней, секунд и микросекунд. Выполняется нормализация, чтобы результирующее количество микросекунд и секунд находилось в диапазонах, описанных для объектов `datetime.timedelta`.

Макросы для извлечения полей из объектов даты. Аргумент должен быть экземпляром `PyDateTime_Date`, включая подклассы (например, `PyDateTime_DateTime`). Аргумент не должен быть *NULL*, и тип не проверяется:

**\[PyDateTime\_GET\_YEAR\]int `PyDateTime_GET_YEAR`(PyDateTime\_Date *\*o*)**

Возвращает год в виде положительного int.

**\[PyDateTime\_GET\_MONTH\]int `PyDateTime_GET_MONTH`(PyDateTime\_Date *\*o*)**

Возвращает месяц в виде int от 1 до 12.

**\[PyDateTime\_GET\_DAY\]int `PyDateTime_GET_DAY`(PyDateTime\_Date *\*o*)**

Возвращает день в виде int от 1 до 31.

Макросы для извлечения полей из объектов datetime. Аргумент должен быть экземпляром `PyDateTime_DateTime`, включая подклассы. Аргумент не должен быть *NULL*, тип не проверяется:

**\[PyDateTime\_DATE\_GET\_HOUR\]int `PyDateTime_DATE_GET_HOUR`(PyDateTime\_DateTime *\*o*)**

Возвращает часы в виде целого числа от 0 до 23.

**\[PyDateTime\_DATE\_GET\_MINUTE\]int `PyDateTime_DATE_GET_MINUTE`(PyDateTime\_DateTime *\*o*)**

Возвращает минуты в виде целого числа от 0 до 59.

**\[PyDateTime\_DATE\_GET\_SECOND\]int `PyDateTime_DATE_GET_SECOND`(PyDateTime\_DateTime *\*o*)**

Возвращает секунды в виде целого числа от 0 до 59.

**\[PyDateTime\_DATE\_GET\_MICROSECOND\]int `PyDateTime_DATE_GET_MICROSECOND`(PyDateTime\_DateTime *\*o*)**

Возвращает микросекунды в виде целого числа от 0 до 999999.

Макросы для извлечения полей из объектов time. Аргумент должен быть экземпляром `PyDateTime_Time`, включая подклассы. Аргумент не должен быть *NULL*, тип не проверяется:

**\[PyDateTime\_TIME\_GET\_HOUR\]int `PyDateTime_TIME_GET_HOUR`(PyDateTime\_Time *\*o*)**

Возвращает часы в виде целого числа от 0 до 23.

**\[PyDateTime\_TIME\_GET\_MINUTE\]int `PyDateTime_TIME_GET_MINUTE`(PyDateTime\_Time *\*o*)**

Возвращает минуты в виде целого числа от 0 до 59.

**\[PyDateTime\_TIME\_GET\_SECOND\]int `PyDateTime_TIME_GET_SECOND`(PyDateTime\_Time *\*o*)**

Возвращает секунды в виде целого числа от 0 до 59.

**\[PyDateTime\_TIME\_GET\_MICROSECOND\]int `PyDateTime_TIME_GET_MICROSECOND`(PyDateTime\_Time *\*o*)**

Возвращает микросекунды в виде целого числа от 0 до 999999.

Макросы для удобства модулей, реализующих DB API:

**\[PyDateTime\_FromTimestamp\][PyObject](https://python-all.ru/3.0/c-api/structures.html#PyObject)\* `PyDateTime_FromTimestamp`([PyObject](https://python-all.ru/3.0/c-api/structures.html#PyObject) *\*args*)**

*Возвращаемое значение: новая ссылка.*

Создаёт и возвращает новый объект `datetime.datetime`, принимая кортеж аргументов, подходящий для передачи в `datetime.datetime.fromtimestamp()`.

**\[PyDate\_FromTimestamp\][PyObject](https://python-all.ru/3.0/c-api/structures.html#PyObject)\* `PyDate_FromTimestamp`([PyObject](https://python-all.ru/3.0/c-api/structures.html#PyObject) *\*args*)**

*Возвращаемое значение: новая ссылка.*

Создаёт и возвращает новый объект `datetime.date`, принимая кортеж аргументов, подходящий для передачи в `datetime.date.fromtimestamp()`.
