Python: 在需要的时间停止

Python: Stop at desired time

我这里有问题。我想在需要的时间停止 print 命令。我想出了一些代码,它仍然在循环。这里的代码,

import time
t = time.strftime("%H%M%S")
while ti:
    print(time.strftime("%H%M%S"))
    time.sleep(1)
    if t = ("140000"): #just example of time to stop print
       break

谢谢

试试这个:

import time

while ti:
    t = time.strftime("%H%M%S")
    print(time.strftime("%H%M%S"))
    time.sleep(1)
    if t = ("140000"): #just example of time to stop print
       break
t = time.strftime("%H%M%S")

只在循环之前执行一次,所以t的值永远不会改变。

你的方法是最差的检查时差的方法; python 的 datetime 框架允许减去时间戳,因此,您可以检查时间,因为其他事情很容易发生,而无需进行任何字符串比较...

这会起作用

import time
t = time.strftime("%H%M%S")
while t:
    t = time.strftime("%H%M%S")
    print(time.strftime("%H%M%S"))
    time.sleep(1)
    if t == ("140000"): #just example of time to stop print
       break

您的代码中存在一些错误

  1. while ti: -- > while t:

  2. if t = ("140000"): --> 如果 t== ("140000"):

  3. 你错过了这一行 t = time.strftime("%H%M%S")

time.sleep(1) 可能会睡得少于或多于一秒,因此 t == "140000" 是不够的。

要在给定的本地时间停止循环:

import time
from datetime import datetime

stop_dt = datetime.combine(datetime.now(), datetime.strptime("1400", "%H%M").time())
stop_time = time.mktime(stop_dt.timetuple())
while time.time() < stop_time:
    print(time.strftime("%H%M%S"))
    time.sleep(max(1, (stop_time - time.time()) // 2))

time.time() returns "seconds since the epoch" -- 与字符串比较不同,它在午夜工作。

睡眠间隔为剩余时间的一半或一秒(取大者)。

time.mktime() 如果停止时间在夏令时结束转换 ("fall back") 期间且本地时间不明确(基于字符串的解决方案),则 return 可能会产生错误结果在这种情况下可能会停止两次)。