2016-12-21 2 views
0

мне нужно работать с datetime, но я не могу найти, как вычесть или добавить несколько минут или секунд от datetime.time объектаКак манипулировать объектами времени в Python?

Я попытался использовать datetime.timedelta, но он не работает.

Вот что я пытался

t1=datetime.time(15,45,20) 
t2=t1-datetime.timedelta(seconds=40) 

Я хотел бы получить t2=datetime.time(15,44,40)

+2

Пожалуйста, уточните * «не работает» * с [mcve]. Есть причина, по которой требуется полное 'datetime' - что должно произойти, если вычесть 40 секунд, чтобы вы ушли в предыдущий день? – jonrsharpe

+1

Вы не можете вычитать timedelta из времени, только из даты и времени. Кроме того, ваше название вопроса вводит в заблуждение, поскольку вы, по-видимому, не хотите манипулировать датами вообще, только раз. – BrenBarn

ответ

1

Timedelta работает с объектами DateTime. Вы можете сделать свое время в datetime (или просто начать с одного, кто заботится о том, что год и т. Д.), А затем извлечь объект времени обратно.

>>>t1=datetime.datetime(2016, 3, 1, 15,45,20) 
>>>t2=t1-datetime.timedelta(seconds=40) 
>>>print t2.time() 
15:44:40 
>>>type(t2.time()) 
<type 'datetime.time'> 

Как отметил один из замечаний, это может дать вам нечетные результаты, если вы не думаете об этом. Возьмите 40 секунд, и закончите со временем, которое позже (но на день раньше на данные даты вы игнорируете). Но вы можете обойти это с минимальной логикой, чтобы поймать вещи, которые будут проходить через 24:00:00 или под 0: 0: 0.

Смежные вопросы