两个日期之间的月份差异

7

我有两个日期,格式如下:a = Timestamp('2022-07-01 00:00:00')和另一个日期也是同样的格式:b = Timestamp('1993-09-01 00:00:00')

因此,我正在尝试找到这两个日期之间的月份差异。我的方法如下:

relativedelta(a,b).years * 12

这个计算得出的值为336,但实际差异是346。请告诉我我哪里出错了,并帮助我纠正。


你的方法只能返回12的倍数,你需要将拆分年份的月份加入到时间差中。 - Klaus D.
2个回答

7

这个缺陷的原因是因为relativedelta给出了完整年份的数量,即从1993-09-012021-09-1,所以你错过了2021-09-012022-07-01之间的最后十个月。 对你现有代码的简单修改是添加月份,如下:

relativedelta(a,b).years * 12 + relativedelta(a,b).months

这将得出正确的结果为346个月。


1
没问题,@beginnercoder。就个人而言,我更喜欢Sreeram TP的答案,因为在你提出的问题中,它不需要额外使用dateutil库,只需使用pandas即可。如果你只是为了这部分代码而使用dateutil,我建议使用他们的解决方案,以避免使用额外的库。 - Chris

5
您可以使用to_period()将日期四舍五入到月份,然后再进行减法运算。
a = pd.Timestamp('2022-07-01 00:00:00')
b = pd.Timestamp('1993-09-01 00:00:00')

months = a.to_period('M') - b.to_period('M')

print(months) # 346

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接