Python查找2个日期之间的月份数

时间:2016-03-17 22:14:45

标签: python date

我想找到2个日期之间的月份数。一些解决方案在1个月后关闭,其他解决方案在几个月后关闭。我在SO上找到了This解决方案,但解决方案太复杂或不正确。

例如,鉴于开始日期为04/30/12和结束日期为03/31/16,

def diff_month(d1, d2):
    return (d1.year - d2.year)*12 + d1.month - d2.month

返回47个月,而不是48个月

dates = [dt for dt in rrule(MONTHLY, dtstart=strt_dt, until=end_dt)]

返回44(原因是2月没有#30天,因此它不会将其视为有效日期)

我当然可以通过

解决这个问题
dates = [dt for dt in rrule(MONTHLY, dtstart=strt_dt.replace(day=2), until=end_dt.replace(day=1))]

但这似乎不是一个合适的解决方案(我的意思是答案是正确的,但方法很糟糕)。

是否有正确的方法来计算月份数,以便在给定我的示例日期时,它会返回48?

1 个答案:

答案 0 :(得分:4)

我发现这篇文章没有Pandas标签,但如果您愿意使用它,您可以简单地执行以下操作,这将取两个月期间的差异:

import pandas as pd

>>> pd.Period('2016-3-31', 'M') - pd.Period('2012-4-30', 'M')
47