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_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#

Несвязанные единицы измерения, можно преобразовать во что угодно

Функции преобразования#

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 объект в NumPy npy_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 при неудаче (например, если выходная строка была слишком короткой).