Объекты даты и времени¶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().
-
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)¶
Возвращает часы в виде целого числа от 0 до 23.
-
int PyDateTime_DATE_GET_MINUTE(PyDateTime_DateTime *o)¶
Возвращает минуты в виде целого числа от 0 до 59.
-
int PyDateTime_DATE_GET_SECOND(PyDateTime_DateTime *o)¶
Возвращает секунды в виде целого числа от 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.