Как l oop мой таймер обратного отсчета в Python? - PullRequest
0 голосов
/ 04 августа 2020

Я пытаюсь установить oop таймер, чтобы он показал мне, сколько секунд осталось. Сейчас он только показывает мне, сколько секунд осталось с момента запуска скрипта , но я бы хотел, чтобы он менялся каждую секунду. Я собираюсь запустить этот скрипт 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

Я думал об этом, пока я oop, но я не знаю, как его использовать в этом коде. Если вы хотите, вы можете изменить мой таймер Я только хочу, чтобы он сообщал мне, сколько секунд осталось до назначенного времени.

Как я решил это:

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

Ответы [ 2 ]

0 голосов
/ 04 августа 2020
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
0 голосов
/ 04 августа 2020

Он «говорит» «Привет!» каждый день в 4:20. Вам нужно вызвать time_to_sleep или запустить его в потоке. Также вы можете изменить свое время (HOUR, MINUTE, SECOND) и частоту в днях (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!")
...