【问题标题】:How to loop my countdown timer in Python?如何在 Python 中循环我的倒数计时器?
【发布时间】:2020-08-04 13:24:09
【问题描述】:

我正在尝试循环我的计时器,所以它会告诉我还剩多少秒。现在它只显示从开始脚本的那一刻起还剩下多少秒,但我希望它每秒都在变化。 我要 24/7 运行这个脚本,所以我需要实时结果。

我的计时器:

from datetime import datetime
from threading import Timer
import time


x = datetime.now()
y=x.replace(hour=12, minute=0, second=0)
t=y-x
secs=t.seconds

我在考虑while循环,但我不知道如何在这段代码中使用它。如果您愿意,您可以更改我的计时器我只想告诉我距离指定时间还剩多少秒。

我是如何解决的:

from datetime import datetime
from threading import Timer
import time


while True:
    time.sleep(1)
    x=datetime.today()
    y=x.replace(hour=17, minute=10, second=0)
    t=y-x
    secs=t.seconds

【问题讨论】:

  • “告诉我还剩多少秒”是什么意思? Print?something Like a loop that print evert secend?
  • 如果您只想通过多少秒:from datetime import datetime from time import sleep old_time = datetime.now() sleep(5) # pass time... print((datetime.now() - old_time).seconds)。这是你的意图?
  • 或者每秒输出while t > 0: print(t, datetime.now()); t -= 1; time.sleep(1)
  • 我将在我的 Discord Bot 中使用它,所以我不能使用 time.sleep(),因为它会冻结 @BBQuercus 的其余代码。
  • @RiveN 所以在线程上运行它

标签: python python-3.x loops timer countdown


【解决方案1】:
import time, datetime

designated_date = datetime.datetime(2021, 1, 6, 15, 8, 24) # designated_date
designated_time = time.mktime(designated_date.timetuple()) # designated unix time in seconds

while True:
    time.sleep(1)         # 1 second delay
    current_time = int(time.time())      # every second get current unix time
    left = designated_time - current_time # calculation how much seconds left to desingated time
    print(left) # print results

【讨论】:

  • 您好,欢迎来到 SO!如果您可以在答案中提供一些解释以及代码,这将很有帮助,只是一个提示!
  • 感谢您的评论。我修正了我的答案
【解决方案2】:

它“说”“你好!”每天4点20分。您需要调用time_to_sleep 或在线程上运行它。此外,您可以更改您的时间(HOURMINUTESECOND)和以天为单位的频率(NEXT_DAY

from datetime import datetime, timedelta

from time import sleep
HOUR = 4
MINUTE = 20
SECOND = 0
NEXT_DAY = 1

def time_to_sleep():
    a = datetime.now()
    a += timedelta(days=NEXT_DAY)

    a = a.replace(hour=HOUR, minute=MINUTE, second=SECOND)

    return (a - datetime.now()).total_seconds()

# you may wont to run this on a thread 
def your_print():
    while True:
        sleep(time_to_sleep())
        print("Hello!")

【讨论】:

    猜你喜欢
    • 2011-11-20
    • 2021-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多