Python中将日期时间与日期时间相加

3
我的问题与这个问题非常相似,但有一个重要的区别。
我有两个日期时间对象:
In [87]: d
Out[87]: datetime.datetime(1900, 1, 1, 2, 0)
In [88]: m
Out[88]: datetime.datetime(1900, 1, 1, 6, 0)

我希望将d的时间部分添加到m中,以获得:
datetime.datetime(1900, 1, 1, 8, 0)

当我将m和d.time()组合起来时,另一个问题给我datetime.datetime(1900年1月1日2:00)。

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

我知道另一种做法是使用timedelta作为

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

但是,是否有更符合Python风格的方法呢?

所以你想要对日期的时间部分进行求和,而不考虑日期部分?那么你已经找到的那个选项就是你唯一的选择。 - Martijn Pieters
对我来说,这似乎是相当Pythonic的。 - Germano
1个回答

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不同,则会得到不同的答案。

你可以使用 d - DT.datetime.combine(d.date(), DT.time.min) 来创建一个时间差。或者只需使用 DT.timedelta(hours=d.hour, minutes=d.minute, seconds=d.second),但是 OP 已经弄清楚了这一点。 - Martijn Pieters
是的,为了澄清,我实际上只需要添加两个时间,但我猜那里没有这样的选项,所以我正在使用strptime将它们加载到datetime对象中。因此,日期不同在这里不会成为问题。谢谢! - Raghuram Onti Srinivasan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接