Я пишу программу, которая будет что-то делать, если now == specific time and day
, и ждать до этого времени, если она не равна.
У меня есть значения morning
, evening
, days
, которые показывают время начала, время окончания и сегодняшний день. Я хотел бы создать программу, которая проверяет, является ли сегодня будний день и определенное время (между morning
и evening
), если True
что-то делает, и если хотя бы один из них является False
, буду ждать до этого времени и после этого сделай что-нибудь.
Я сделал это с while loop
, но когда он начинается со значения False
(не в нужное время), он продолжает печатать False
, даже если это время наступило и значение должно измениться на True
, но оно показывает True
когда я начну в нужное время.
Вот код:
import datetime
from datetime import date
from time import sleep
#setting values
now = datetime.datetime.now()
morning = now.replace(hour=9, minute=00, second=0, microsecond=0)
evening = now.replace(hour=16, minute=0, second=0, microsecond=0)
days = now.strftime("%A")
#check if time is in range and return True or False
def time_in_range(morning, evening, x):
if morning <= evening:
return morning <= x <= evening
else:
return morning <= x or x <= evening
timerange = time_in_range(morning, evening, now)
#check if today is weekday
if date.today().weekday() == 0:
dayz = True
else:
dayz = False
# If today weekday and time range do something
if dayz == True and timerange == True:
print("Yes")
while dayz == False or timerange == False:
sleep(5)
timerange = time_in_range(morning, evening, now)
print(timerange) #this printing false even if is right time.
# But it shows True when I turn it on in right time