cod*_*642 1 datetime python-3.x
我正在编写代码,让用户写下他们所拥有的事物的日期和时间。它包含开始的日期、开始时间和结束时间。它还允许用户指定他们是否希望将其延续到多个星期(例如,每月的每个星期一)我正在使用 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
Run Code Online (Sandbox Code Playgroud)
当运行它并测试它是否正确进入新的月份时,我收到错误:
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
Run Code Online (Sandbox Code Playgroud)
我哪里错了?
很难完全准确,没有看到以前的一些代码(例如,你在哪里day,month,year,和times,但这里是你如何能够使用来自哪里?)timedelta在你的代码:
fulldateadd = datetime.date(year, month, day)
for i in range(times):
fulldateadd = fulldateadd + datetime.timedelta(7)
Run Code Online (Sandbox Code Playgroud)
一个timedelta实例代表一个时间段,而不是一个特定的绝对时间。默认情况下,传递给构造函数的单个整数表示天数。所以timedelta(7)给你一个代表7天的对象。
timedelta然后实例可以与datetime或date使用基本算术的实例一起使用。例如,date(2016, 12, 31) + timedelta(1)会给你date(2017, 1, 1)而不需要你做任何特别的事情。
| 归档时间: |
|
| 查看次数: |
5175 次 |
| 最近记录: |