Python datetime.datetime输入错误
我有一个菜单,输入开始和结束日期。我在下面的菜单项中选择选项2时出错Python datetime.datetime输入错误,python,python-3.x,datetime,menu,Python,Python 3.x,Datetime,Menu,我有一个菜单,输入开始和结束日期。我在下面的菜单项中选择选项2时出错 ### Take action as per selected menu-option ### if choice == 1: # Start with default window print ("Starting Backtest from 2014-1-1 until 2015-12-31") start = datetime.datetime(2014,1,1)
### Take action as per selected menu-option ###
if choice == 1: # Start with default window
print ("Starting Backtest from 2014-1-1 until 2015-12-31")
start = datetime.datetime(2014,1,1)
start = start.date()
end = datetime.datetime(2015,12,31)
end = end.date()
elif choice == 2:
## Get input ###
start = input('Enter Start date [Format: YYYY,M,D - 2014,1,23] : ')
start = datetime.datetime(start)
start = start.date()
end = input('Enter End date [Format: 2015,8,23] : ')
end = datetime.datetime(end)
end = end.date()
我的菜单项1怎么可能工作,而2怎么可能不工作
错误是
TypeError: an integer is required (got type str)
请帮忙
谢谢您可能会收到该错误,因为您正在将字符串与整数进行比较。你可以这样在两者之间切换
>>> int('123')
>>> 123
>>> str(123)
>>> '123'
您可能会收到该错误,因为您正在将字符串与整数进行比较。你可以这样在两者之间切换
>>> int('123')
>>> 123
>>> str(123)
>>> '123'
好的-经过仔细研究,我发现这个问题帮助我找到了正确的答案。 所以我需要这些代码来让我的脚本顺利运行。在选项2下,您将看到带有strtime和strftime的新代码。显然我需要通过strtime才能到达strtime
### Take action as per selected menu-option ###
if choice == 1: # Start with default window
print ("Starting Backtest from 2014-1-1 until 2015-12-31 (2 years)")
start = datetime.datetime(2014,1,1)
start = start.date()
end = datetime.datetime(2015,12,31)
end = end.date()
elif choice == 2:
## Get input ###
start_input = input('Enter Start date [Format: YYYY,M,D - 2014,01,23] : ')
start_dt_obj = datetime.datetime.strptime(start_input, '%Y,%m,%d')
start = datetime.datetime.strftime(start_dt_obj, '%Y,%m,%d')
end_input = input('Enter End date [Format: YYYY,M,D - 2015,08,23] : ')
end_dt_obj = datetime.datetime.strptime(end_input, '%Y,%m,%d')
end = datetime.datetime.strftime(end_dt_obj, '%Y,%m,%d')
然而,这使我的代码运行,但我想保持日期作为一个日期。与选项1不同,选项2代码将我的日期保存为str。嗯…好的-经过仔细研究,我发现这个问题帮助我找到了正确的答案。 所以我需要这些代码来让我的脚本顺利运行。在选项2下,您将看到带有strtime和strftime的新代码。显然我需要通过strtime才能到达strtime
### Take action as per selected menu-option ###
if choice == 1: # Start with default window
print ("Starting Backtest from 2014-1-1 until 2015-12-31 (2 years)")
start = datetime.datetime(2014,1,1)
start = start.date()
end = datetime.datetime(2015,12,31)
end = end.date()
elif choice == 2:
## Get input ###
start_input = input('Enter Start date [Format: YYYY,M,D - 2014,01,23] : ')
start_dt_obj = datetime.datetime.strptime(start_input, '%Y,%m,%d')
start = datetime.datetime.strftime(start_dt_obj, '%Y,%m,%d')
end_input = input('Enter End date [Format: YYYY,M,D - 2015,08,23] : ')
end_dt_obj = datetime.datetime.strptime(end_input, '%Y,%m,%d')
end = datetime.datetime.strftime(end_dt_obj, '%Y,%m,%d')
然而,这使我的代码运行,但我想保持日期作为一个日期。与选项1不同,选项2代码将我的日期保存为str。嗯…看起来你会遇到这个错误,因为你在某个地方使用了一个字符串,而这个字符串应该是一个整数。提示:错误发生在哪一行?我在这一行中得到了错误start=datetime。datetime(start)看起来像是你得到了错误,因为你在某个地方使用的字符串应该是整数。提示:错误发生在哪一行?我在这一行中得到错误start=datetime.datetime(start)