Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x ValueError:日期超出了月份的范围_Python 3.x_Datetime - Fatal编程技术网

Python 3.x ValueError:日期超出了月份的范围

Python 3.x ValueError:日期超出了月份的范围,python-3.x,datetime,Python 3.x,Datetime,我正在编写一段代码,让用户可以为他们手头的东西写下日期和时间。它包含开始日期、开始时间和完成时间。它还允许用户指定他们是否希望它延续到多个星期(例如,一个月内的每个星期一) 我使用for循环来实现这一点,因为不同的月份有不同的日期,我显然希望(例如,如果下周一在下个月)它有正确的日期 这是我的代码: for i in range(0 , times): day = day month = month fulldateadd = datetime.date(year, mo

我正在编写一段代码,让用户可以为他们手头的东西写下日期和时间。它包含开始日期、开始时间和完成时间。它还允许用户指定他们是否希望它延续到多个星期(例如,一个月内的每个星期一) 我使用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

我哪里出错了?

如果没有看到前面的一些代码(例如,
、时间来自哪里),就很难完全准确,但下面是您可以在代码中使用
时间增量
的方法:

fulldateadd = datetime.date(year, month, day)
for i in range(times):
    fulldateadd = fulldateadd + datetime.timedelta(7)
实例表示一段时间,而不是特定的绝对时间。默认情况下,传递给构造函数的单个整数表示天数。因此
timedelta(7)
为您提供一个表示7天的对象


timedelta
实例可以使用基本算法与
datetime
date
实例一起使用。例如,
date(2016,12,31)+timedelta(1)
会给你
date(2017,1,1)
,而你不需要做任何特殊的事情。

如果没有看到之前的一些代码(例如,
,以及
时间
来自哪里),就很难完全准确,但以下是如何在代码中使用
timedelta

fulldateadd = datetime.date(year, month, day)
for i in range(times):
    fulldateadd = fulldateadd + datetime.timedelta(7)
实例表示一段时间,而不是特定的绝对时间。默认情况下,传递给构造函数的单个整数表示天数。因此
timedelta(7)
为您提供一个表示7天的对象


timedelta
实例可以使用基本算法与
datetime
date
实例一起使用。例如,
date(2016,12,31)+timedelta(1)
将为您提供
date(2017,1,1)
,而您无需做任何特殊的事情。

就像您的中的注释一样,我建议您使用它为
datetime
对象添加时间。那你就不必担心月份的界限了。@glibdud我对最新的时间很陌生,因为在学校里我们并没有太多的细节。我喜欢它的外观,但我不知道实现它的好方法。与中的注释一样,我建议您使用它向
datetime
对象添加时间。那你就不必担心月份的界限了。@glibdud我对最新的时间很陌生,因为在学校里我们并没有太多的细节。我喜欢它的外观,但我不知道如何实现它。完美的解释和答案。谢谢:)我知道这不是问问题的地方,但我能请你看看你是否能帮助解决其他问题吗?完美的解释和回答。谢谢:)我知道这不是问问题的地方,但我能请你看看你是否能帮我解决一些其他问题吗?