datetime.timedelta examples

В этом разделе представлены частые приемы работы длительностью или интервалом времени datetime.timedelta(), а так же арифметика c datetime.timedelta.

Примеры арифметики c datetime.timedelta():

>>> from datetime import timedelta
>>> year = timedelta(days=365)
>>> ten_years = 10 * year
>>> ten_years
# datetime.timedelta(days=3650)
>>> ten_years.days
# 3650
>>> ten_years.days // 365
# 10
>>> nine_years = ten_years - year
>>> nine_years
# datetime.timedelta(days=3285)
>>> three_years = nine_years // 3
>>> three_years, three_years.days // 365
# (datetime.timedelta(days=1095), 3)

Преобразование интервала datetime.timedelta() в секунды:

>>> import datetime
>>> delta = datetime.timedelta(minutes=1)
>>> delta.total_seconds()
# 60.0
>>> delta = datetime.timedelta(hours=1, minutes=1)
>>> delta.total_seconds()
# 3660.0
>>> delta = datetime.timedelta(days=1, hours=1, minutes=1)
>>> delta.total_seconds()
# 90060.0
>>> delta = datetime.timedelta(weeks=3, days=5)
>>> delta.total_seconds()
# 2246400.0

# Интервал между датами
>>> date1 = datetime.datetime.now()
>>> date2 = datetime.datetime(2021, 1, 1) 
>>> delta = date2 - date1
>>> delta.total_seconds()
# 20662333.983181

Форматирование вывода интервала времени datetime.timedelta().

Для объектов datetime.timedelta нет встроенного средства форматирования, но это довольно легко сделать самостоятельно:

Узнаем сколько прошло времени с события.

Узнаем сколько осталось времени до события.

Пример подсчета дней до события.

При помощи datetime.datetime.

При помощи datetime.date.

Подсчет прошедших и предстоящих дат.

Узнаем дату "дня программиста". Как известно, день программиста приходится на 256 день в году.

Узнаем, какая дата будет через 3 недели и 5 дней.

Узнаем, какая дата была 100 дней назад.

Узнаем, какое время будет через 1 час 30 минут и 45 секунд.

Использование месяца, при расчете интервала timedelta.

В конструкторе объекта datetime.timedelta() нет аргумента, отвечающего за месяц, следовательно его надо рассчитывать. Как тогда точно рассчитать количество дней в нескольких месяцах, если количество дней в месяцах разное? А если расчеты выпадут на февраль и да еще год високосный?

Для подсчета дней в месяцах можно воспользоваться функцией calendar.monthrange() встроенного модуля calendar. Рассчитаем дату, которая будет через 3 месяца и 6 дней от текущей:

Last updated