Python给date对象添加天数报错?LSTM股价预测日期处理
核心代码问题排查
- 导入缺失:仅从
datetime模块导入了datetime类,未导入同模块下的timedelta类,直接通过datetime.timedelta调用会触发type object 'datetime.datetime' has no attribute 'timedelta'报错。 - 变量名不匹配:计算时定义了
whole_days、left_days变量,后续使用时错写为whole_time、left_time,会触发NameError变量未定义的报错。 - 间隔计算逻辑错误:原代码用
date1.days计算占比基数,该属性是日期在当年的序数,不是两个输入日期的实际间隔,会导致后续总天数计算完全偏离预期。
修正后可直接运行的实现代码
# 补充导入timedelta类 from datetime import datetime, timedelta # 解析输入的两个日期字符串,得到date对象 data1 = datetime.strptime(data1input, '%Y%m%d').date() data2 = datetime.strptime(data2input, '%Y%m%d').date() # 计算两个日期的实际间隔天数(对应当前已知的占总周期80%的部分) known_interval = abs((data2 - data1).days) # 推导完整周期总天数 whole_days = round(known_interval * 100 / 80) # 计算剩余20%对应的天数 left_days = round(whole_days * 0.2) # 将剩余天数叠加到data2上,得到最终预测目标日期 target_date = data2 + timedelta(days=left_days)
注意事项
- 如果不想单独导入
timedelta类,也可以修改导入方式为import datetime,后续调用时写全路径datetime.timedelta(days=left_days),但这种写法容易和同模块下的datetime类混淆,更推荐单独导入需要的类。 - 计算日期间隔时,两个date对象相减得到的是timedelta对象,通过取其
.days属性得到的间隔值才是两个日期的真实差值,不要误用date对象自带的.days年序属性。
内容的提问来源于stack exchange,提问作者user15499252
相关产品推荐
相关产品推荐

