Получение разницы в 3 часа после добавления 27 часов с помощью Timedelta - PullRequest
0 голосов
/ 10 июня 2018

Импортирует как показано ниже:

from datetime import datetime, timedelta

Сначала я получаю дату момента, как видно:

foo = datetime.now()

А потом я получаю 27 часов спустя, как показано ниже:

bar = foo + timedelta(hours=27)

Теперь мне нужно проверить это.Для этой цели я использую еще одну переменную:

baz = bar-foo

Теперь я проверяю разницу между bar и foo:

seconds = baz.seconds
hours = seconds/60/60 # which returns 3.0

Я добавил 27 часов и получилРазница в 3 часа между bar и foo.

В чем причина?Заранее спасибо.

Среда

  • Python 3.6.5
  • Манджаро 17.1.10 (если это действительно имеет значение)

1 Ответ

0 голосов
/ 10 июня 2018

Проверка только атрибута seconds объекта timedelta недостаточна.

Согласно документации timedelta :

Только дни , секунды и микросекунды хранятся внутри.

Рассмотрим эти компоненты по очереди:

days = baz.days
seconds = baz.seconds
microsecs = baz.microseconds

print(days, seconds, microsecs, sep=', ')
1, 10800, 0

Вы будетенужно сложить их по отдельности, чтобы получить общую сумму timedelta.Если ваша цель - извлечь общее количество секунд, вы можете использовать метод total_seconds:

totalsecs = baz.total_seconds()  # 97200.0
assert totalsecs / 60 / 60 == 27  # check we have 27 hours
...