API для работы с датой и временем#
NumPy представляет даты внутри с помощью счётчика int64 и структуры метаданных единицы измерения. Разницы во времени представляются аналогично с использованием int64 и структуры метаданных единицы измерения. Описанные ниже функции доступны для облегчения преобразования между строками дат ISO 8601, датами NumPy и объектами datetime Python в C.
Типы данных#
В дополнение к npy_datetime и npy_timedelta определения типов
для npy_int64, NumPy определяет две дополнительные структуры, которые представляют
метаданные единицы времени и «развернутое» представление даты и времени.
-
тип PyArray_DatetimeMetaData#
Представляет метаданные единицы измерения даты и времени.
typedef struct { NPY_DATETIMEUNIT base; int num; } PyArray_DatetimeMetaData;
-
NPY_DATETIMEUNIT основание#
Единица измерения даты и времени.
-
int число#
Множитель для единицы.
-
NPY_DATETIMEUNIT основание#
-
тип npy_datetimestruct#
«Развёрнутое» представление значения даты и времени
typedef struct { npy_int64 year; npy_int32 month, day, hour, min, sec, us, ps, as; } npy_datetimestruct;
-
перечисление NPY_DATETIMEUNIT#
Единицы времени, поддерживаемые NumPy. "FR" в названиях вариантов перечисления означает частоту (frequency).
-
перечислитель 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#
Функции преобразования#
-
int NpyDatetime_ConvertDatetimeStructToDatetime64(PyArray_DatetimeMetaData *meta, const npy_datetimestruct *dts, npy_datetime *выход)#
Преобразует дату и время из datetimestruct в дату и время в единицах, указанных метаданными единицы. Дата считается действительной.
Если
numесли член структуры метаданных большой, в этой функции может произойти переполнение целого числа.Возвращает 0 при успехе и -1 при неудаче.
-
int NpyDatetime_ConvertDatetime64ToDatetimeStruct(PyArray_DatetimeMetaData *meta, npy_datetime dt, npy_datetimestruct *выход)#
Преобразует дату-время с единицами измерения, указанными в метаданных единиц, в развернутую структуру даты-времени.
Возвращает 0 при успехе и -1 при неудаче.
-
int NpyDatetime_ConvertPyDateTimeToDatetimeStruct(PyObject *obj, npy_datetimestruct *выход, NPY_DATETIMEUNIT *out_bestunit, int apply_tzinfo)#
Проверяет и преобразует Python
datetime.datetimeилиdatetime.dateобъект в NumPynpy_datetimestruct.out_bestunitпредлагает единицу измерения на основе того, был ли объектdatetime.dateилиdatetime.datetimeобъект.Если
apply_tzinfoравно 1, эта функция использует tzinfo для преобразования время UTC, в противном случае возвращает структуру с местным временем.Возвращает -1 при ошибке, 0 при успехе и 1 (без установки ошибки), если obj не имеет необходимых атрибутов даты или времени.
-
int NpyDatetime_ParseISO8601Datetime(char const *str, Py_ssize_t len, NPY_DATETIMEUNIT единица, NPY_CASTING приведение типов, npy_datetimestruct *выход, 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должен быть строкой, завершающейся NULL, иlenдолжна быть его длина.unitдолжен содержать -1, если единица измерения неизвестна, или единицу измерения, которая будет использоваться, если она известна.castingуправляет тем, как обнаруженная единица измерения из строки может быть приведена к параметру 'unit'.outзаполняется распарсенной датой-временем.out_bestunitпредлагает единицу измерения на основе количества разрешения, предоставленного в строке, или -1 для NaT.out_specialустанавливается в 1, если разобранное время было ‘today’, ‘now’, пустая строка или ‘NaT’. Для ‘today’ рекомендуется единица ‘D’, для ‘now’ рекомендуется единица ‘s’, а для ‘NaT’ рекомендуется единица ‘Y’.Возвращает 0 при успехе, -1 при неудаче.
-
int NpyDatetime_GetDatetimeISO8601StrLen(int локальный, NPY_DATETIMEUNIT основание)#
Возвращает длину строки для преобразования объектов datetime в строки с заданными локальным временем и настройками единиц измерения. Используйте это при построении строк для передачи в
NpyDatetime_MakeISO8601Datetime.
-
int NpyDatetime_MakeISO8601Datetime(npy_datetimestruct *dts, char *outstr, npy_intp outlen, int локальный, int utc, NPY_DATETIMEUNIT основание, int tzoffset, NPY_CASTING приведение типов)#
Преобразует
npy_datetimestructв (почти) ISO 8601 NULL-терминированную строку. Если строка точно помещается в пространство, она пропускает NULL-терминатор и возвращает успех.Отличия от ISO 8601 — это строка 'NaT' и количество цифр года >= 4 вместо строго 4.
Если
localне равно нулю, он создаёт строку в местном времени со смещением часового пояса +-####. Еслиlocalравен нулю иutcне равен нулю, создавать строку, заканчивающуюся на 'Z', чтобы обозначить UTC. По умолчанию информация о часовом поясе не прикрепляется.baseограничивает вывод этой единицей. Установитеbaseв -1 для автоматического определения базы, после которой все значения равны нулю.tzoffsetиспользуется, еслиlocalвключён, иtzoffsetустановлено значение, отличное от -1. Это ручное переопределение используемого часового пояса в виде смещения в минутах.castingопределяет, разрешена ли потеря данных путем усечения данных до более грубой единицы. Это взаимодействует сlocal, слегка, чтобы сформировать строку единицы даты как локальное время, приведение должно быть небезопасным.Возвращает 0 при успехе, -1 при неудаче (например, если выходная строка была слишком короткой).