datetime(日期超出范围)Python
我在我的脚本里遇到了一个问题。
end = date(2012, 6, 20)
start = date(2012, 5, 01)
delta = end - start
delta = delta.days
print 'The number of days taken into account for training periods testing:', delta
all_training_periods=[pd.date_range(start=dt.datetime(2012, 5, 01+k),end=dt.datetime(2012, 6,20),freq='10T') for k in range(0,delta)]
问题是我收到了一个错误信息,上面写着:
File "<ipython-input-192-57c97670a7f1>", line 1, in <module>
all_training_periods=[pd.date_range(start=dt.datetime(2012, 5, 01+k),end=dt.datetime(2012, 6,20),freq='10T') for k in range(0,delta)]
ValueError: day is out of range for month
这里的关键是,我想要不同的训练时间段,从5月1日到6月20日,从5月2日到6月20日,……一直到6月19日到6月20日。
2 个回答
1
我建议这样来增加日期:
datetime.date(2012, 5, 1) + datetime.timedelta(k, 0)
0
在你的代码中
end = date(2012, 6, 20)
start = date(2012, 5, 01)
delta = end - start
这里的 delta.days
计算结果是 50。然后在你的这一行:
dt.datetime(2012, 5, 01+k)
最后会得到类似这样的结果:
dt.datetime(2012, 5, 01+49)
然后 datetime
会报错,因为五月没有49天。没有哪个月份有超过31天。
试试这个:
from datetime import timedelta
dt.datetime(2012, 5, 01) + timedelta(days=k)
这样可以得到正确的计算结果。