首页 > 解决方案 > 用户输入时间然后比较

问题描述

将当前时间与没有日期的用户输入时间进行比较

所以我正在做一个照明例程,我需要做一些时间比较,看看我是在一个周期的中间还是在一个周期之外。长话短说,我在将用户输入的时间与 datetime 模块的格式化时间进行比较时遇到问题:

def userInput():
        try:
            a = datetime.datetime.strptime(input('When you would like to routine to start in HH:MM 24 hour format: '), "%H:%M")
            print (a.strftime("%H:%M"))
        except:
            print ("Please enter correct time in HHMM format")
        return a

def timeComparator(a):
    now = datetime.datetime.now().time()
    #this obtains the current time
    today = a
    #if statement compares input from 
    print("the time now is: ", now)
    if (now < today):
        print ("hello human")
    elif (now > today):
        print ("hello plant")


if __name__=="__main__":

    a = userInput()

    timeComparator(a)

我收到错误“TypeError:'<'在'datetime.time'和'datetime.datetime'的实例之间不支持”,我猜这意味着比较的格式不兼容。

我不需要日期或其他任何东西,只需要当前时间。我希望能够比较用户输入时间是在当前时间之前还是之后。

标签: pythontimecompare

解决方案


today在函数timeComparator中是一个datetime对象,而你now是一个time对象。只要确保您user_input返回一个time对象:

def userInput():
    try:
        a = datetime.datetime.strptime(input('When you would like to routine to start in HH:MM 24 hour format: '), "%H:%M").time() #<----- added .time()
        print (a.strftime("%H:%M"))
    except:
        print ("Please enter correct time in HHMM format")
    return a

推荐阅读