2014-05-02 59 views
0

我的腳本有問題。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日不同的訓練期,從第2 5月至6月20日,...,6月19日至6月20日。

+0

當k是32時會發生什麼?你認爲第三十三章是否會解析? – acushner

+0

請'pep8'你的代碼,另外,什麼是'01 + k',用八進制符號表示? –

回答

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會拋出異常,因爲5月份沒有49天。沒有一個月的時間超過31天。

試試這個:

from datetime import timedelta 
dt.datetime(2012, 5, 01) + timedelta(days=k) 

這將使正確的計算。

+0

謝謝!它運作良好 Tesekur ederim – Kunta

+0

不客氣,又名,rica ederim(: – FallenAngel

1

我建議增加日期是這樣的:

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

您可能想詳細說明一下。什麼是'x'?第二個函數調用是做什麼的? –

+0

Nah,不想詳細說明。感謝您注意,確實應用了's/x/k /'。 'k'是OP的變量。 –

+0

謝謝你們!無論如何你都很有趣,但它的工作......感謝您的幫助 – Kunta