2013-09-02 3 views
3

Мой вопрос очень похож на this question, но с важным отличием.добавить datetime с datetime в python

У меня есть два DateTime объекты, такие как

In [87]: d 
Out[87]: datetime.datetime(1900, 1, 1, 2, 0) 
In [88]: m 
Out[88]: datetime.datetime(1900, 1, 1, 6, 0) 

Я хочу, чтобы добавить время часть д т получить

datetime.datetime(1900, 1, 1, 8, 0) 

Другой вопрос дает мне datetime.datetime (1900, 1, 1, 2, 0), когда я объединить м и d.time(), как

In [90]: print datetime.datetime.combine(m, d.time()) 
1900-01-01 02:00:00 

Я знаю, что другой способ сделать это было бы использовать время delta as

In [91]: print m + datetime.timedelta(hours=d.hour, minutes=d.minute) 
1900-01-01 08:00:00 

Но, есть ли более питонический путь?

+0

так что вы хотите суммировать * просто * временные части дат, независимо от того, какая часть даты? Тогда ваш единственный вариант - тот, который вы уже нашли. –

+0

кажется довольно pythonic для меня – Germano

ответ

1

Вы можете сделать это:

In [1]: import datetime as DT 

In [2]: d = DT.datetime(1900,1,1,2,0) 

In [3]: m = DT.datetime(1900,1,1,6,0) 

In [4]: delta = d - DT.datetime(1900,1,1,0,0) 

In [5]: m + delta 
Out[5]: datetime.datetime(1900, 1, 1, 8, 0) 

Но обратите внимание, что это даст вам другой ответ, если год/месяц/дата d отличаются от 1900/1/1.

+0

Вы можете использовать 'd - DT.datetime.combine (d.date(), DT.time.min)' для создания дельта. Или просто 'DT.timedelta (hours = d.hour, minutes = d.minute, seconds = d.second)', но OP уже так много вычислил. –

+0

Yup, Чтобы уточнить, мне просто нужно добавить два раза, но я думаю, что это не так, поэтому я загружаю их в объекты datetime, используя strptime. Таким образом, я думаю, что здесь будет другая проблема. Благодаря! –

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