Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/356.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 TypeError:必须是str,而不是datetime.timedelta_Python_Datetime - Fatal编程技术网

Python TypeError:必须是str,而不是datetime.timedelta

Python TypeError:必须是str,而不是datetime.timedelta,python,datetime,Python,Datetime,这是我的代码,它在第一次打印时可以正常工作,请告诉我这个错误 TypeError:必须是str,而不是datetime.timedelta import datetime hour = datetime.datetime.now().hour tomorrow = datetime.datetime.now() for i in range(50): hour += 1 print(hour) if hour >= 23: tomorrow = to

这是我的代码,它在第一次打印时可以正常工作,请告诉我这个错误 TypeError:必须是str,而不是datetime.timedelta

import datetime
hour = datetime.datetime.now().hour
tomorrow = datetime.datetime.now()
for i in range(50):
    hour += 1
    print(hour)
    if hour >= 23:
        tomorrow = tomorrow + datetime.timedelta(days=1)
        tomorrow = tomorrow.strftime('%d/%m/%Y')
        hour = 9
        print (tomorrow)
以下是输出:

13
14
15
16
17
18
19
20
21
22
23
07/12/2017
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Traceback (most recent call last):
  File "C:\Users\hamza.salhi\Desktop\datetime test.py", line 8, in <module>
    tomorrow = tomorrow + datetime.timedelta(days=1)
TypeError: must be str, not datetime.timedelta
13
14
15
16
17
18
19
20
21
22
23
07/12/2017
10
11
12
13
14
15
16
17
18
19
20
21
22
23
回溯(最近一次呼叫最后一次):
文件“C:\Users\hamza.salhi\Desktop\datetime test.py”,第8行,在
明天=明天+datetime.timedelta(天=1)
TypeError:必须是str,而不是datetime.timedelta

请有人告诉我为什么它一开始工作正常,然后我得到那个错误,它第一次工作,因为明天是一个日期时间。日期时间实例:

tomorrow = datetime.datetime.now()
但是,在第一次之后,明天将用字符串替换

不能将
timedelta()
对象添加到字符串中。明天不要重新绑定
。将字符串指定给其他名称,或者仅格式化对象以进行打印(而不将其指定给名称):


明天=明天.strftime(“%d/%m/%Y”)
将“明天”的类型更改为字符串,因此无法将其添加到datetime.timedelta

而不是做:

tomorrow = tomorrow + datetime.timedelta(days=1)
tomorrow = tomorrow.strftime('%d/%m/%Y')
...
print (tomorrow)
尝试:


我很想听听我的答案有什么不好的地方,值得投反对票。这样我可以改进我的答案!
if hour >= 23:
    tomorrow = tomorrow + datetime.timedelta(days=1)
    tomorrow_formatted = tomorrow.strftime('%d/%m/%Y')
    hour = 9
    print(tomorrow_formatted)  # different name
    print(tomorrow.strftime('%d/%m/%Y'))  # print the `strftime()` result
tomorrow = tomorrow + datetime.timedelta(days=1)
tomorrow = tomorrow.strftime('%d/%m/%Y')
...
print (tomorrow)
tomorrow = tomorrow + datetime.timedelta(days=1)
...
print('{:%d/%m/%Y}'.format(tomorrow))