Python:在理想的时间停止

时间:2015-02-11 08:57:07

标签: python 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

由于

4 个答案:

答案 0 :(得分:1)

t = time.strftime("%H%M%S")

仅在循环之前执行一次,因此t的值不会改变。

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

答案 1 :(得分:0)

这将有效

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. 而ti: - >而t:

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

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

答案 2 :(得分:0)

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()返回“自纪元以来的秒数” - 与字符串比较不同,它适用于午夜。

睡眠间隔是剩余时间的一半或一秒(无论大小)。

如果在本地时间不明确的情况下停止时间是在DST转换结束期间(“回退”),则

time.mktime()可能会返回错误的结果(在这种情况下,基于字符串的解决方案可能会停止两次)

答案 3 :(得分:-1)

试试这个:

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