Подскажите с unixtime
Мне нужно чтобы код продолжил свою работу в определенное время по unixtime. Я пробовал Переводить время в unixtime в цикле while True, но он постоянно перескакивает нужное время.
while True:
millisecond = datetime.datetime.now()
t=time.mktime(millisecond.timetuple())*1000
#print(t)
if t=='1652032326000':
print(yeeee)
if t=='1652032326000': вот здесь перепрыгивает время
Ответы (3 шт):
Можно использовать time.time(), но главное просто вместо == поставить >=.
import time
need_time = 1652032686 # на 1000 не надо умножать
while 1:
if time.time() >= need_time:
do_something()
Вероятно самый простой вариант — это определить, какой длины должна быть пауза и приостановить выполнение скрипта при помощи функции time.sleep. Как-нибудь так (предполагается, что вы захотите продолжить выполнение скрипта 1 января 2023 года, в 0 часов 0 минут по Москве):
import time
time_to_continue = 1672520400
current_time = time.time()
if current_time < time_to_continue:
time.sleep(time_to_continue - current_time)
Если исходная задача состоит в том, чтобы приостановить выполнение скрипта на определённое количество секунд, тогда вообще просто time.sleep(sleep_time_sec).
А ждать наступления нужного времени, проверяя текущее время в цикле (если у вас сделано так), это не лучшая идея, потому что тогда процессор нагружается ненужной работой.
Исправил ваш код. См.комментарий ниже.
while True:
millisecond = datetime.datetime.now()
t=time.mktime(millisecond.timetuple())*1000
#print(t)
# Исправлена ошибка - обе части сравнения приведены к целому
# И равенство заменено, чтобы не "проскочить" время
if int (t) >= 1652032326000:
print(yeeee)