我想找到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?
答案 0 :(得分:4)
我发现这篇文章没有Pandas标签,但如果您愿意使用它,您可以简单地执行以下操作,这将取两个月期间的差异:
import pandas as pd
>>> pd.Period('2016-3-31', 'M') - pd.Period('2012-4-30', 'M')
47