Документация Python неофициальный перевод

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

Модуль datetime предоставляет различные объекты для работы с датой и временем. Перед использованием любой из этих функций в исходный код необходимо включить заголовочный файл datetime.h (обратите внимание: он не включается макросом Python.h), а также вызвать макрос PyDateTime_IMPORT, обычно – в функции инициализации модуля. Этот макрос помещает указатель на C-структуру в статическую переменную PyDateTimeAPI, которая используется последующими макросами.

PyDateTime_IMPORT()

Импортирует C API datetime.

В случае успеха заполняет указатель PyDateTimeAPI. При неудаче устанавливает PyDateTimeAPI в NULL и возбуждает исключение. Вызывающий код должен проверить, не произошла ли ошибка, с помощью PyErr_Occurred():

PyDateTime_IMPORT;
if (PyErr_Occurred()) { /* очистка */ }

Предупреждение

Это несовместимо с под-интерпретаторами.

Изменено в версии 3.15: Теперь этот макрос потокобезопасен.

type PyDateTime_CAPI

Структура, содержащая поля для C API datetime.

Поля этой структуры являются закрытыми и могут изменяться.

Не используйте её напрямую; предпочтительнее использовать PyDateTime_* API.

PyDateTime_CAPI *PyDateTimeAPI

Динамически выделяемый объект, содержащий C API datetime.

Эта переменная доступна только после успешного выполнения PyDateTime_IMPORT.

Изменено в версии 3.15: К этой переменной не следует обращаться напрямую, так как прямой доступ не является потокобезопасным. Вместо этого используйте PyDateTime_IMPORT().

type PyDateTime_Date

Этот подтип PyObject представляет объект даты Python.

type PyDateTime_DateTime

Этот подтип PyObject представляет объект datetime Python.

type PyDateTime_Time

Этот подтип PyObject представляет объект времени Python.

type PyDateTime_Delta

Этот подтип PyObject представляет разность между двумя значениями datetime.

PyTypeObject PyDateTime_DateType

Этот экземпляр PyTypeObject представляет тип date в Python; это тот же объект, что и datetime.date на уровне Python.

PyTypeObject PyDateTime_DateTimeType

Этот экземпляр PyTypeObject представляет тип datetime в Python; это тот же объект, что и datetime.datetime на уровне Python.

PyTypeObject PyDateTime_TimeType

Этот экземпляр PyTypeObject представляет тип time в Python; это тот же объект, что и datetime.time на уровне Python.

PyTypeObject PyDateTime_DeltaType

Этот экземпляр PyTypeObject представляет тип Python для разницы между двумя значениями datetime; это тот же объект, что и 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)

Возвращает истину, если ob имеет тип PyDateTime_DateType или является подтипом PyDateTime_DateType. ob не должен быть NULL. Эта функция всегда завершается успешно.

int PyDate_CheckExact(PyObject *ob)

Возвращает истину, если ob имеет тип PyDateTime_DateType. ob не должен быть NULL. Эта функция всегда завершается успешно.

int PyDateTime_Check(PyObject *ob)

Возвращает истину, если ob имеет тип PyDateTime_DateTimeType или является подтипом PyDateTime_DateTimeType. ob не должен быть NULL. Эта функция всегда завершается успешно.

int PyDateTime_CheckExact(PyObject *ob)

Возвращает истину, если ob имеет тип PyDateTime_DateTimeType. ob не должен быть NULL. Эта функция всегда завершается успешно.

int PyTime_Check(PyObject *ob)

Возвращает истину, если ob имеет тип PyDateTime_TimeType или является подтипом PyDateTime_TimeType. ob не должен быть NULL. Эта функция всегда завершается успешно.

int PyTime_CheckExact(PyObject *ob)

Возвращает истину, если ob имеет тип PyDateTime_TimeType. ob не должен быть NULL. Эта функция всегда завершается успешно.

int PyDelta_Check(PyObject *ob)

Возвращает истину, если ob имеет тип PyDateTime_DeltaType или является подтипом PyDateTime_DeltaType. ob не должен быть NULL. Эта функция всегда завершается успешно.

int PyDelta_CheckExact(PyObject *ob)

Возвращает истину, если ob имеет тип PyDateTime_DeltaType. ob не должен быть NULL. Эта функция всегда завершается успешно.

int PyTZInfo_Check(PyObject *ob)

Возвращает истину, если ob имеет тип PyDateTime_TZInfoType или является подтипом PyDateTime_TZInfoType. ob не должен быть NULL. Эта функция всегда завершается успешно.

int PyTZInfo_CheckExact(PyObject *ob)

Возвращает истину, если 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 с указанными годом, месяцем, днём, часом, минутой, секундой, микросекундой и fold.

Добавлено в версии 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 с указанными часом, минутой, секундой, микросекундой и fold.

Добавлено в версии 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, и с именем часового пояса name.

Добавлено в версии 3.7.

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

int PyDateTime_GET_YEAR(PyDateTime_Date *o)

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

int PyDateTime_GET_MONTH(PyDateTime_Date *o)

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

int PyDateTime_GET_DAY(PyDateTime_Date *o)

Возвращает день в виде int от 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)

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

int PyDateTime_DATE_GET_FOLD(PyDateTime_DateTime *o)

Возвращает fold в виде целого числа от 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)

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

int PyDateTime_TIME_GET_MINUTE(PyDateTime_Time *o)

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

int PyDateTime_TIME_GET_SECOND(PyDateTime_Time *o)

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

int PyDateTime_TIME_GET_MICROSECOND(PyDateTime_Time *o)

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

int PyDateTime_TIME_GET_FOLD(PyDateTime_Time *o)

Возвращает fold в виде целого числа от 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)

Возвращает количество дней в виде целого числа от -999999999 до 999999999.

Добавлено в версии 3.3.

int PyDateTime_DELTA_GET_SECONDS(PyDateTime_Delta *o)

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

Добавлено в версии 3.3.

int PyDateTime_DELTA_GET_MICROSECONDS(PyDateTime_Delta *o)

Возвращает количество микросекунд в виде целого числа от 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().

Внутренние данные Internal data

Следующие символы предоставляются C API, но должны считаться только внутренними.

PyDateTime_CAPSULE_NAME

Имя капсулы datetime для передачи в PyCapsule_Import().

Только для внутреннего использования. Вместо этого используйте PyDateTime_IMPORT.