datetime(日期超出范围)Python

时间:2014-05-02 11:03:05

标签: python datetime

我的剧本有问题。

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 个答案:

答案 0 :(得分:1)

我建议增加这样的日期:

datetime.date(2012, 5, 1) + datetime.timedelta(k, 0)

答案 1 :(得分: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)

这将进行正确的计算。