【发布时间】:2016-03-17 22:14:45
【问题描述】:
我正在尝试查找两个日期之间的月数。一些解决方案延迟了 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?
【问题讨论】:
-
你确定 48 是正确的吗?或者您是否考虑将超过 11 个月的一天变成 12 岁?