Класс timedelta() модуля datetime
Last updated
Last updated
Синтаксис:
Параметры:
Все аргументы являются необязательными и по умолчанию равны 0. Аргументы могут быть или и могут быть положительными или отрицательными.
days=0
- день,
seconds=0
- секунды,
microseconds=0
- микросекунды,
milliseconds=0
- миллисекунды,
minutes=0
- минуты,
hours=0
- часы,
weeks=0
- недели.
Возвращаемое значение:
Описание:
Экземпляр datetime.timedelta
продолжительность хранит как сочетание days
, seconds
и microseconds
, а остальные переданные в конструктор аргументы конвертируются в эти единицы:
millisecond
преобразуется в 1000 microseconds
.
minute
преобразуется в 60 seconds
.
hour
преобразуется в 3600 seconds
.
week
преобразуется в 7 days
.
days
, seconds
и microseconds
затем нормализуются так, чтобы представление было уникальным:
0 <= microseconds
< 1000000
0 <= seconds
< 3600*24 (количество секунд в одном дне)
-999999999 <= days
<= 999999999
В следующем примере показано, как любые аргументы, кроме days
, seconds
и microseconds
объединяются и нормализуются в эти три результирующих атрибута:
Обратите внимание, что нормализация отрицательных значений может сначала удивить. Например:
timedelta
имеет 1 метод:delta.total_seconds()
:
Метод timedelta.total_seconds()
возвращает общее количество секунд, содержащихся в продолжительности timedelta
. Эквивалент td/timedelta(seconds=1)
.
Для интервальных единиц, отличных от секунд, используйте форму деления напрямую, например td/timedelta(microseconds=1)
.
Обратите внимание, что для очень больших временных интервалов более 270 лет на большинстве платформ этот метод теряет микросекундную точность.
timedelta
:t1 = t2 + t3
Сумма t2 и t3. Впоследствии t1-t2 == t3 и t1-t3 == t2 верны.
(1)
t1 = t2 - t3
Разница t2 и t3. Впоследствии t1 == t2 - t3 и t2 == t1 + t3 верны.
(1)(6)
t1 = t2 * i t1 = i * t2
Дельта умножается на целое число 'int'. Впоследствии t1 // i == t2 верно, если i! = 0.
В общем случае t1 * i == t1 * (i-1) + t1 верно.
(1)
t1 = t2 * f t1 = f * t2
Дельта умножается на 'float'. Результат округляется до ближайшего кратного 'timedelta.resolution' с использованием округления от половины до четности.
f = t2 / t3
Деление общей длительности 't2' на интервал 't3'. Возвращает объект 'float'.
(3)
t1 = t2 / f t1 = t2 / i
Дельта делится на 'float' или 'Int'. Результат округляется до ближайшего кратного 'timedelta.resolution' с использованием округления от половины до четности.
t1 = t2 // i t1 = t2 // t3
Вычисляется, остаток (если есть) выбрасывается. Во втором случае возвращается целое число.
(3)
t1 = t2 % t3
Остаток вычисляется как объект 'timedelta'.
(3)
q, r = divmod(t1, t2)
Вычисляет частное и остаток: q = t1 // t2 и r = t1% t2. 'q' представляет собой целое число, а 'r' представляет собой объект 'datetime.timedelta'.
(3)
+t1
Возвращает объект 'datetime.timedelta' с тем же значением.
(2)
-t1
Эквивалентно datetime.timedelta(-t1.days, -t1.seconds, -t1.microseconds) и так же t1 * -1.
(1) (4)
abs(t)
Эквивалентно '+t', когда t.days >= 0, и '-t', когда t.days < 0.
(2)
str(t)
Возвращает строку в форме [D day [s],] [H] H: MM: SS [.UUUUUU], где D отрицательно для отрицательного 't'.
(5)
repr(t)
Возвращает строковое представление объекта 'datetime.timedelta' в виде вызова конструктора со значениями канонического атрибута.
Замечания:
Это точно, но может быть переполнение.
Это точно и не может быть переполнения.
-timedelta.max
не может быть представлен как объект datetime.timedelta
.
Выражение t2 - t3
всегда будет равно выражению t2 + (-t3)
, кроме случаев, когда t3
равно timedelta.max
. В этом случае первое даст результат, а второе вызовет переполнение.
Поддерживаются сравнения объектов datetime.timedelta
с некоторыми оговорками.
В булевых контекстах объект timedelta
считается истинным тогда и только тогда, когда он не равен datetime.timedelta(0)
.
Дополнительный пример нормализации:
.
Класс модуля представляет собой продолжительность, разницу между двумя датами или временем.
Если какой-либо аргумент представляет собой число и есть дробные микросекунды и микросекунды, оставшиеся от всех аргументов, то они объединяются, а их сумма округляется до ближайшей микросекунды с использованием прерывателя с округлением от половины до четности. Если аргумент не является float
, то процессы преобразования и нормализации являются точными, информация не теряется.
Если нормализованное значение дней находится за пределами диапазона -999999999 <= days <= 999999999
, то появляется .
Деление на 0 поднимает .
Строковые представления объектов нормализуются аналогично их внутреннему представлению. Это приводит к несколько необычным результатам для отрицательных timedeltas
.Например:
В дополнение к операциям, перечисленным выше, объекты поддерживают определенные дополнения и вычитания с объектами date
и datetime
. Смотрите "".
Сравнения ==
или !=
всегда возвращают , независимо от типа сравниваемого объекта:
Для всех других сравнений, таких <
как >
и когда объект timedelta
сравнивается с объектом другого типа, вызывается :