在Python中找到两个日期之间的中间日期

24

给定日期:

my_guess = '2014-11-30'
their_guess = '2017-08-30'

我该如何在日期之间拆分差值,返回正确的日历日期?

2个回答

45

一种方法是使用 datetime。找到两个日期的差异,将其减半,并加在较早的日期上:

>>> from datetime import datetime
>>> a = datetime(2014, 11, 30)
>>> b = datetime(2017, 8 ,30)
>>> a + (b - a)/2
2016-04-15 00:00:00

这不仅适用于datetime对象,也适用于date对象(在Python 3.5中测试过)。 - phoibos
4
仅供参考,虽然已经过去6年,但是在Python 3.9中,这段代码的结果与预期不符 - 对我来说,a + (b - a)/2 的结果只是a的值。 - ThePartyTurtle
1
我遇到了这个错误:TypeError: unsupported operand type(s) for +: 'datetime.datetime' and 'datetime.datetime' 你有什么想法吗? - J Agustin Barrachina
好的,我说过... a + (b - a)/2(a + b) / 2 是一样的... 好吧,它并不是这样的... - J Agustin Barrachina
3
@AgustinBarrachina:Python不允许您添加datetime对象:您需要使用datetime + timedelta(减去datetime对象会给您一个timedelta对象)。 - Alex Riley
@ThePartyTurtle:这个方法对我仍然可行(我在 Python 3.10 中尝试过):如果您有一个导致它产生错误结果的示例,请告诉我 ab 的值,我会进行调查。 - Alex Riley

5
from datetime import datetime
d1 = datetime.strptime(my_guess,"%Y-%m-%d")
d2 = datetime.strptime(their_guess,"%Y-%m-%d")
print d1.date() + (d2-d1) / 2 # first date plus the midpoint of the difference between d1 and d2  
2016-04-15 

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