Как автоматически проверять время?

#time #lua

#время #lua

Вопрос:

Возможно ли автоматически проверять время, а затем выполнять определенные коды?

 timer = os.date('%H:%M:%S', os.time() - 13 * 60 * 60 )

if timer == "18:04:40" then
   print("hello")
end
 

Я пытаюсь печатать hello «18: 04:40» каждый день (время os.date) без установки таймера (который подсчитывает, сколько времени прошло с момента запуска программы), поскольку я не могу запускать программу 24 часа без остановки…

Спасибо за чтение.

Ответ №1:

Возможно, это не лучшее решение, но, например, при использовании библиотеки, подобной love2d, вы могли бы запустить что-то вроде этого:

 
function love.update(dt)
 timer = os.date('%H:%M:%S', os.time() - 13 * 60 * 60 )
 if timer >= value then 
  --stuff here
 end
end
 

Или, если вы хотите сделать так, чтобы у вас было целое число, что-то вроде

 tick = 0
function love.update(dt)
 tick = tick   dt 
 if tick > 1 then 
  timer = os.date('%H:%M:%S', os.time() - 13 * 60 * 60 )
  if timer >= value then 
   --stuff here
  end
 end
end
 

Ответ №2:

Lua должен каким-то образом проверять время.
Без цикла, который может быть реализован с debug.sethook() помощью .
Пример с Lua 5.1, введенным в интерактивном Lua (lua -i)…

 > print(_VERSION)
Lua 5.1
> debug.sethook() -- This clears a defined hook
> -- Next set up a hook function that fires on 'line' events
> debug.sethook(function() local hour, min, sec = 23, 59, 59 print(os.date('%H:%M:%S', os.time({year = 2021, month = 12, day = 11, hour = hour, min = min, sec = sec}))) end, 'l')
-- just hit return/enter or do other things
23:59:59
 

5.9 — Библиотека отладки
https://www.lua.org/manual/5.1/manual.html#5.9