Python中timedelta(months=12)初始化失败,请求技术帮助
解决datetime添加一年报错的问题
Python标准库的timedelta类不支持months或years这类参数,它仅接受固定时长的参数(比如days、seconds、microseconds),这就是你执行代码时抛出TypeError: 'months' is an invalid keyword argument for __new__()的原因。
两种可行解决方案:
方案一:使用第三方库
python-dateutil
先安装依赖:pip install python-dateutil然后修改代码:
from datetime import datetime from dateutil.relativedelta import relativedelta current_date = datetime.today().date() next_year_date = current_date + relativedelta(years=1) print(next_year_date)relativedelta专门用于处理日期的相对增减,能自动处理月份、年份的可变天数问题。方案二:不依赖第三方库,手动处理年份
直接修改日期的年份,同时处理闰年2月29的特殊情况:from datetime import datetime current_date = datetime.today().date() try: next_year_date = current_date.replace(year=current_date.year + 1) except ValueError: # 若原日期是闰年2月29,下一年无该日期则改为2月28 next_year_date = current_date.replace(year=current_date.year + 1, day=28) print(next_year_date)
内容的提问来源于stack exchange,提问作者dark dayone
相关产品推荐
相关产品推荐

