Python - Working out if time now is between two times

后端 未结 3 1746
时光说笑
时光说笑 2020-12-10 07:43

I\'m trying to find the cleanest/most pythonic way of evaluating if \"now\" is between two times; However; the Start/End times may, or may not, fall across a day boundary- f

3条回答
  •  夕颜
    夕颜 (楼主)
    2020-12-10 07:47

    Your code is a bit chaotic. I would do something like this:

    import datetime
    
    DAY, NIGHT = 1, 2
    def check_time(time_to_check, on_time, off_time):
        if on_time > off_time:
            if time_to_check > on_time or time_to_check < off_time:
                return NIGHT, True
        elif on_time < off_time:
            if time_to_check > on_time and time_to_check < off_time:
                return DAY, True
        elif time_to_check == on_time:
            return None, True
        return None, False
    
    
    on_time = datetime.time(23,30)
    off_time = datetime.time(4,15)
    timenow = datetime.datetime.now().time()
    current_time = datetime.datetime.now().time()
    
    when, matching = check_time(current_time, on_time, off_time)
    
    if matching:
        if when == NIGHT:
            print("Night Time detected.")
        elif when == DAY:
            print("Day Time detected.")
    

提交回复
热议问题