python time range validator

前端 未结 2 1334
忘了有多久
忘了有多久 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条回答
  •  萌比男神i
    2020-12-04 01:49

    UPDATE: Based on your update

    This looks better, the only thing I'm confused about is your if datetime.now() < endTrig conditional.

    Correct me if I'm still misunderstanding you, but your current conditional looks like it reads:

    if now() is before endTrigger:
      - if status is 1, we are good, stay on
      - if status is 0, turn on
      - if status is anything else (but cant it only be 1 or 0?):
        * if status is 1 ... (but wait, we already checked for this above!)
        * if status is 0 ... (ditto, these two checks will never trigger)
        * otherwise, force off
    if now() is after endTime:
      - some logging (shouldnt this be where we turn off?)
    

    You mentioned status must be 0 or 1. Based on that I would expect your conditional to look something like:

    .
    . [start/end setup stuff]
    .
    # If we haven't reached end time yet
    if datetime.now() < endTrig:
        # If status is 1, we're already on
        if curStatus == 1:
            log('Already on')
        # If status isn't 1, it must be 0 and we should turn on
        else:
            log('Turn on')
            flipSwitchOn()
    
    # If we have passed the end time
    else:
        # If we're on, time to turn off
        if curStatus == 1:
            log('Turning off')
            flipSwitchOff()
        # If its not 1 it must be 0, we're off, stay off
        else:
            log('Already off')
    

提交回复
热议问题