最大区别: relativedelta模块功能更加全面而强大,时间差支持years, months;而timedelta不支持years, months。
relativedelta源码:
timedelta源码:
对比源码,可以看出relativedelta参数支持年、月及更多参数可选,功能跟强大。
示例:计算与‘2022-09-08 12:00:00’相差1年2个月3天的日期。
**分析:**如果使用timedelta函数,不支持年月,直接使用days=30?那1、3、5、7这些特殊的月份呢?还有一个更加特殊的2月份呢?还有考虑平闰年问题呢?怎么解决呢?或许可以能解决,但是会发现麻烦很多。
如果采用relativedelta,则可以很轻松解决,代码如下:
import datetime
from dateutil.relativedelta import relativedelta
t1 = datetime.datetime.strptime("2022-09-08 12:00:00", '%Y-%m-%d %H:%M:%S')
delta = relativedelta(years=1, months=2, days=3) # delta为relativedelta类型
t2 = t1 + delta # 2023-11-11 12:00:00