объект datetime.time возвращает ошибку при попытке с ним работать? - PullRequest
0 голосов
/ 07 января 2020

Мне выдается следующий вывод:

[('John', datetime.time(4, 35)), ('Emy', datetime.time(19, 0))]

Учитывая этот вывод, я хочу иметь возможность работать с первым элементом каждого кортежа (объекты datetime.time).

Например, я не могу сделать:

(datetime.combine(date(1,1,1), datetime.time(4, 35)) + timedelta(hours = 4)).time()

Я получаю следующую ошибку:

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-14-e2c5fbe62c16> in <module>
----> 1 (datetime.combine(date(1,1,1), datetime.time(4, 35)) + timedelta(hours = tz)).time()

TypeError: descriptor 'time' requires a 'datetime.datetime' object but received a 'int'

Пожалуйста, посоветуйте, как решить проблему.

1 Ответ

0 голосов
/ 08 января 2020

Я проанализировал и обнаружил, что проблема была в tz:

(datetime.combine(date(1,1,1), datetime.time(4, 35)) + timedelta(hours = tz)).time()

Когда timedelta (часы = tz) с tz = -9 (например), это стало:

datetime.timedelta(days=-1, seconds=54000)

Но если вы поменяете дату (1,1,1) на дату (2,1,1), она отлично подойдет для моих нужд. Я могу двигаться назад и вперед с 27-часовой разницей в часовых поясах без каких-либо проблем, потому что -1 день покрыт date(2,1,1)

Он будет работать и с частью дня:

import datetime

(datetime.datetime.combine(datetime.date(1,1,2), datetime.time(4, 35)) + datetime.timedelta(hours = 27)).time()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...