timedelta
, который принимает аргументы в днях, секундах, микросекундах и наносекундах. Миллисекунды можно передать, как число микросекунд (умножив на 1000). Пример: timedelta(seconds=10, microseconds=500000, nanoseconds=100)
. Для операций с датами используйте сложение и вычитание datetime
объектов и timedelta
.
Использование timedelta
для работы с миллисекундами и наносекундами в Python достаточно прямолинейно, так как timedelta
позволяет оперировать с микросекундами, а миллисекунды и наносекунды являются их составными частями. Основная сложность заключается в том, что timedelta
сохраняет только целое число микросекунд, поэтому при создании timedelta
с использованием наносекунд, значение будет округлено до микросекунд.
Вот как это можно делать:
from datetime import timedelta
# Создание timedelta с миллисекундами:
milliseconds = 500 # 500 миллисекунд
delta_ms = timedelta(milliseconds=milliseconds)
print(f"timedelta с {milliseconds} мс: {delta_ms}") # Вывод: timedelta с 500 мс: 0:00:00.500000
# Создание timedelta с наносекундами:
nanoseconds = 500000 # 500 микросекунд (нельзя напрямую использовать наносекунды)
delta_ns = timedelta(microseconds=nanoseconds / 1000) # Делим на 1000, чтобы получить микросекунды
print(f"timedelta с {nanoseconds} нс: {delta_ns}") # Вывод: timedelta с 500000 нс: 0:00:00.000500
# Можно комбинировать разные единицы времени:
delta_combined = timedelta(seconds=1, milliseconds=200, microseconds=50)
print(f"Комбинированный timedelta: {delta_combined}") # Вывод: Комбинированный timedelta: 0:01:00.200050
# Арифметические операции:
delta1 = timedelta(seconds=1)
delta2 = timedelta(milliseconds=500)
delta_sum = delta1 + delta2
print(f"Сумма delta1 и delta2: {delta_sum}") # Вывод: Сумма delta1 и delta2: 0:01:00.500000
delta_diff = delta1 - delta2
print(f"Разность delta1 и delta2: {delta_diff}") # Вывод: Разность delta1 и delta2: 0:00:59.500000
Важные моменты:
timedelta
оперирует микросекундами. Все дробные части микросекунд отбрасываются.datetime64
из NumPy, либо работать с представлением времени в виде числовых значений (например, timestamp в наносекундах).Пример использования с `datetime`:
from datetime import datetime
now = datetime.now()
future_time = now + delta_combined
print(f"Текущее время: {now}")
print(f"Время в будущем: {future_time}")
В заключение, timedelta
предоставляет удобный способ работы с временными интервалами, включая миллисекунды и наносекунды (фактически микросекунды, округленные от наносекунд). Для операций, требующих точности выше микросекунд, следует использовать альтернативные подходы.