我有两个日期,格式如下:a = Timestamp('2022-07-01 00:00:00')
和另一个日期也是同样的格式:b = Timestamp('1993-09-01 00:00:00')
因此,我正在尝试找到这两个日期之间的月份差异。我的方法如下:
relativedelta(a,b).years * 12
这个计算得出的值为336
,但实际差异是346
。请告诉我我哪里出错了,并帮助我纠正。
我有两个日期,格式如下:a = Timestamp('2022-07-01 00:00:00')
和另一个日期也是同样的格式:b = Timestamp('1993-09-01 00:00:00')
因此,我正在尝试找到这两个日期之间的月份差异。我的方法如下:
relativedelta(a,b).years * 12
这个计算得出的值为336
,但实际差异是346
。请告诉我我哪里出错了,并帮助我纠正。
这个缺陷的原因是因为relativedelta
给出了完整年份的数量,即从1993-09-01
到2021-09-1
,所以你错过了2021-09-01
和2022-07-01
之间的最后十个月。 对你现有代码的简单修改是添加月份,如下:
relativedelta(a,b).years * 12 + relativedelta(a,b).months
这将得出正确的结果为346
个月。
dateutil
库,只需使用pandas
即可。如果你只是为了这部分代码而使用dateutil
,我建议使用他们的解决方案,以避免使用额外的库。 - Christo_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