python time range validator

前端 未结 2 1340
忘了有多久
忘了有多久 2020-12-04 00:59

I have 2 parameters in DB: start and stop. value for them can be eg 07:00-23:00 or 23:00-07:00 (start after 07, stop after 23 or start after 23, stop after 07)

In t

2条回答
  •  情话喂你
    2020-12-04 01:28

    There are two cases: the current time is between given times (clock-wise) or outside (imagine the clock circle):

    #!/usr/bin/env python
    from datetime import datetime
    
    def in_between(now, start, end):
        if start < end: # e.g., "07:00-23:00"
            return start <= now < end
        elif end < start: # e.g., "23:00-07:00"
            return start <= now or now < end
        else: # start == end
            return True # consider it 24 hour interval
    
    now = datetime.now().time()
    for date_range in ["07:00-23:00", "23:00-07:00"]:
        start, end = [datetime.strptime(s, "%H:%M").time()
                      for s in date_range.split("-")]
        not_ = '' if in_between(now, start, end) else 'not '
        print("{now:%H:%M} is {not_}in between {date_range}".format(**vars()))
    

    Output

    02:26 is not in between 07:00-23:00
    02:26 is in between 23:00-07:00
    

提交回复
热议问题