【发布时间】:2021-03-21 00:30:12
【问题描述】:
假设我想每五秒生成一个介于 0 和 20 之间的随机整数,但前提是日期时间在日出之后和日落之前。 这是我到目前为止得到的:
from suntime import Sun, SunTimeException
import time, datetime
import random
latitude = 51.51
longitude = -0.13
sun = Sun(latitude, longitude)
today_sr = sun.get_sunrise_time() + datetime.timedelta(hours=1)
today_ss = sun.get_sunset_time() + datetime.timedelta(hours=1) + datetime.timedelta(minutes=6)
sunrise = today_sr.strftime('%H:%M')
sunset = today_ss.strftime('%H:%M')
while True:
t0 = time.time()
while (time.strftime("%H:%M",time.localtime(t0)) >= sunrise and time.strftime("%H:%M",time.localtime(t0)) <= sunset) == True: #Solange Tageszeit >= Sonnenaufgangszeit:
print ("Sunrise -> Starting...")
while True:
print (random.randint(0,30))
time.sleep(5) #wait 5 seconds..
else:
print (time.strftime("%H:%M",time.localtime(t0)))
print ("Nighttime")
time.sleep(60) #check datetime every 60 seconds
如果我在日出时间之前启动代码,它会在日出时间 == 日期时间后立即开始生成随机整数。但它并没有在日落时停止。它只是继续我认为的内部 while 循环,并且不再检查日期时间,因为内部条件为真。
能否请您告诉我如何更改循环以使其在日落时停止?而且,当然会在第二天早上日出时继续。
【问题讨论】:
标签: python-3.x datetime time while-loop