【问题标题】:Python Find # of Months Between 2 DatesPython 查找两个日期之间的月数
【发布时间】: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 岁?

标签: python date


【解决方案1】:

我知道这篇文章没有 Pandas 标签,但如果你愿意使用它,你可以简单地执行以下操作,计算两个月之间的差异:

import pandas as pd

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

【讨论】:

  • OP 的代码返回 47,他们期望 48 这似乎是错误的,但这是要求
  • 你是对的@PadraicCunningham .. 我的 48 答案不正确,因为它应该是 47。
猜你喜欢
  • 2017-07-20
  • 2011-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-14
  • 2020-07-19
相关资源
最近更新 更多