Python:获取从日期字符串传递的年数

时间:2011-03-14 03:03:58

标签: python string datetime time string-conversion

鉴于我开始使用字符串,例如'3/6/2011',即月/日/年,当天是2011年3月13日(7天后),我怎样才能找到该年自那时起(7/365 = 0.0191780821917808)在Python中已经过去了吗?

请注意,我希望能够处理任何输入日期。不过任何格式,您可以采用上面的格式。

3 个答案:

答案 0 :(得分:7)

你可以通过减去两个timedelta得到datetime,这为你提供了很多很酷的方法来操作时差。

>>> import datetime
>>> before = datetime.datetime.strptime('3/6/2011','%m/%d/%Y')
>>> now = datetime.datetime.now()
>>> type(now-before)
<type 'datetime.timedelta'>
>>> (now-before).days
7
>>> float((now-before).days)/365
0.019178082191780823

编辑:哇,谁会认为这个简单的问题有这么多深度。在this question上查看得票最多的答案。处理闰年是一个“困难”的问题。 (感谢@kriegar)

答案 1 :(得分:1)

>>> import datetime
>>> datestring = "3/6/2011"
>>> (datetime.date.today() - datetime.datetime.strptime(datestring, "%m/%d/%Y").date()).days / 365.0
0.019178082191780823

答案 2 :(得分:1)

上述所有答案都没有考虑到闰年。看起来这个问题的讨论与你的问题有关。

Pythonic difference between two dates in years?