Интерфейс API дат и времени
NumPy представляет даты внутри в виде 64-битного счётчика и структуры метаданных единицы. Разницы во времени представляются аналогично — 64-битным значением и структурой метаданных единицы. Функции, описанные ниже, доступны для преобразования между строками дат в формате ISO 8601, NumPy дат и времени и объектами Python datetime в C.
Типы данных
В дополнение к типам npy_datetime и npy_timedelta для npy_int64, NumPy определяет две дополнительные структуры, представляющие метаданные единицы времени и «развёрнутый» вид даты и времени.
- типPyArray_DatetimeMetaData
-
Представляет метаданные единицы даты и времени.
typedef struct { NPY_DATETIMEUNIT base; int num; } PyArray_DatetimeMetaData;- NPY_DATETIMEUNITbase
-
Единица даты и времени.
- intnum
-
Множитель для единицы.
- NPY_DATETIMEUNITbase
- типnpy_datetimestruct
-
«Развёрнутый» вид значения даты и времени.
typedef struct { npy_int64 year; npy_int32 month, day, hour, min, sec, us, ps, as; } npy_datetimestruct;
- перечислениеNPY_DATETIMEUNIT
-
Единицы времени, поддерживаемые NumPy. «FR» в именах вариантов перечисления — сокращение от частоты.
- перечислительNPY_FR_ERROR
-
Ошибка или неопределённые единицы.
- перечислительNPY_FR_Y
-
Года
- перечислительNPY_FR_M
-
Месяцы
- перечислительNPY_FR_W
-
Недели
- перечислительNPY_FR_D
-
Дни
- перечислительNPY_FR_h
-
Часы
- перечислительNPY_FR_m
-
Минуты
- перечислительNPY_FR_s
-
Секунды
- перечислительNPY_FR_ms
-
Миллисекунды
- перечислительNPY_FR_us
-
Микросекунды
- перечислительNPY_FR_ns
-
Наносекунды
- перечислительNPY_FR_ps
-
Пикосекунды
- перечислительNPY_FR_fs
-
Фемтосекунды
- перечислительNPY_FR_as
-
Аттосекунды
- перечислительNPY_FR_GENERIC
-
Неопределённые единицы, могут быть преобразованы в любые другие
- перечислительNPY_FR_ERROR
Функции преобразования
- intNpyDatetime_ConvertDatetimeStructToDatetime64(PyArray_DatetimeMetaData*meta, constnpy_datetimestruct*dts, npy_datetime*out)
-
Преобразует дату и время из структуры
datetimestructв значениеdatetime64в указанных единицах измерения из метаданных. Предполагается, что дата действительна.Если значение
numв структуре метаданных велико, в этой функции может произойти переполнение целых чисел.Возвращает 0 при успехе и -1 при ошибке.
- intNpyDatetime_ConvertDatetime64ToDatetimeStruct(PyArray_DatetimeMetaData*meta, npy_datetimedt, npy_datetimestruct*out)
-
Преобразует значение
datetime64с единицами измерения, указанными в метаданных, в структуруdatetimestruct.Возвращает 0 при успехе и -1 при ошибке.
- intNpyDatetime_ConvertPyDateTimeToDatetimeStruct(PyObject*obj, npy_datetimestruct*out, NPY_DATETIMEUNIT*out_bestunit, intapply_tzinfo)
-
Проверяет и преобразует объект Python
datetime.datetimeилиdatetime.dateв структуру NumPynpy_datetimestruct.out_bestunitпредлагает рекомендуемые единицы измерения, основываясь на том, был ли объектdatetime.dateилиdatetime.datetimeобъектом.Если
apply_tzinfoравно 1, эта функция используетtzinfoдля преобразования во временную зону UTC, в противном случае возвращает структуру с локальным временем.Возвращает -1 при ошибке, 0 при успехе и 1 (без установки ошибки), если у объекта obj отсутствуют необходимые атрибуты даты или времени.
- intNpyDatetime_ParseISO8601Datetime(charconst*str, Py_ssize_tlen, NPY_DATETIMEUNITunit, NPY_CASTINGcasting, npy_datetimestruct*out, NPY_DATETIMEUNIT*out_bestunit, npy_bool*out_special)
-
Парсит (почти) стандартные строки дат в формате ISO 8601. Отличия:
- Дата "20100312" парсится как год 20100312, а не как эквивалент "2010-03-12". Знак '-' в датах не является необязательным.
- Только секунды могут иметь десятичную точку, с до 18 знаков после неё (максимальная точность аттосекунд).
- Для разделения даты и времени может использоваться как 'T', так и ' ' в формате ISO 8601. Оба варианта обрабатываются одинаково.
- Пока не поддерживает форматы "YYYY-DDD" или "YYYY-Www".
- Не обрабатывает високосные секунды (значение секунд в таких случаях равно 60).
- Не обрабатывает 24:00:00 как синоним полуночи (00:00:00) завтрашнего дня
- Поддерживает специальные значения "NaT" (нет времени), "Today" (текущий день по местному времени) и "Now" (текущее время в UTC).
strдолжна быть строкой с нулевым завершением, аlen- её длиной.unitдолжно содержать -1, если единица измерения неизвестна, или единицу измерения, если она известна.castingуправляет тем, как обнаруженная единица измерения из строки может быть приведена к типу 'unit'.outзаполняется распарсенной датой и временем.out_bestunitпредлагает рекомендуемые единицы измерения, основываясь на разрешении, предоставленном в строке, или -1 для NaT.out_specialустанавливается в 1, если распарсенное время было 'today', 'now', пустой строкой или 'NaT'. Для 'today' рекомендуемая единица измерения 'D', для 'now' - 's', а для 'NaT' - 'Y'.Возвращает 0 при успехе и -1 при ошибке.
- intNpyDatetime_GetDatetimeISO8601StrLen(intlocal, NPY_DATETIMEUNITbase)
-
Возвращает длину строки, используемую для преобразования объектов
datetimeс заданными настройками местного времени и единиц измерения в строки. Используйте это при создании строк для передачи вNpyDatetime_MakeISO8601Datetime.
- intNpyDatetime_MakeISO8601Datetime(npy_datetimestruct*dts, char*outstr, npy_intpoutlen, intlocal, intutc, NPY_DATETIMEUNITbase, inttzoffset, NPY_CASTINGcasting)
-
Преобразует структуру
npy_datetimestructв строку (почти) в формате ISO 8601 с нулевым завершением. Если строка помещается точно в отведенное место, она опускает нулевой терминатор и возвращает успех.Отличия от формата ISO 8601 — строка 'NaT' и количество цифр в году (>= 4 вместо точно 4).
Если
localотлично от нуля, генерируется строка в локальном времени с отступом часового пояса (+/-####). Еслиlocalравно нулю, аutcотлично от нуля, генерируется строка, оканчивающаяся на 'Z', обозначающая UTC. По умолчанию информация о часовом поясе не добавляется.baseограничивает вывод данной единицей измерения. Установитеbaseв -1 для автоматического определения базовой единицы измерения после которой все значения равны нулю.tzoffsetиспользуется, еслиlocalвключено, иtzoffsetустановлено в значение отличное от -1. Это ручная переопределённая локальная временная зона для использования, как смещение в минутах.castingуправляет тем, разрешается ли потеря данных путем усечения данных до более грубой единицы измерения. Это взаимодействует сlocal, незначительно, для формирования строки с единицей измерения даты как местного времени, приведение типов должно быть небезопасным.Возвращает 0 при успехе и -1 при ошибке (например, если строка вывода была слишком короткой).
© 2005–2024 NumPy Developers
Licensed under the 3-clause BSD License.
https://numpy.org/doc/2.0/reference/c-api/datetimes.html