[英]ValueError: day is out of range for month python
我正在編寫代碼,使用戶可以寫下他們所擁有的東西的日期和時間。 它包含開始日期,開始時間和結束時間。 它還允許用戶指定是否要延續幾個星期(例如每個月的每個星期一),我正在使用for循環來執行此操作,並且由於不同的月份我顯然想要不同的日期(如果例如,下一個星期一是下個月)。
這是我的代碼:
for i in range(0 , times):
day = day
month = month
fulldateadd = datetime.date(year, month, day)
day = day + 7
if month == ( '01' or '03' or '05' or '07' or '10'or '12'):
if day > 31:
print(day)
day = day - 31
print(day)
month = month + 1
elif month == ( '04' or '06'or '09' or '11'):
if day > 30:
print(day)
day = day - 30
print(day)
month = month + 1
elif month == '02':
if day > 29:
print(day)
day = day - 29
print(day)
month = month + 1
在運行此程序並進行測試以查看它是否可以正確進入新的月份時,我收到錯誤消息:
File "C:\Users\dansi\AppData\Local\Programs\Python\Python36-32\gui test 3.py", line 73, in addtimeslot
fulldateadd = datetime.date(year, month, day)
ValueError: day is out of range for month
我哪里出問題了?
如果沒有看到一些先前的代碼(例如, day
, month
, year
和times
從哪里來?),很難完全准確,但是這是您可以在代碼中使用timedelta
的方式:
fulldateadd = datetime.date(year, month, day)
for i in range(times):
fulldateadd = fulldateadd + datetime.timedelta(7)
timedelta
實例代表一個時間段,而不是特定的絕對時間。 默認情況下,傳遞給構造函數的單個整數表示天數。 因此timedelta(7)
給您一個代表7天的對象。
然后可以使用基本算術將timedelta
實例與datetime
或date
實例一起使用。 例如, date(2016, 12, 31) + timedelta(1)
將為您提供date(2017, 1, 1)
date(2016, 12, 31) + timedelta(1)
date(2017, 1, 1)
而您無需執行任何特殊操作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.