Python datetime.datetime输入错误

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)

我有一个菜单,输入开始和结束日期。我在下面的菜单项中选择选项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)
        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)