datetime(日期超出范围)Python

0 投票
2 回答
2657 浏览
提问于 2025-04-18 05:07

我在我的脚本里遇到了一个问题。

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)

这样可以得到正确的计算结果。

撰写回答