Не существует причудливого способа сделать таймеры в чистом Луа.Чтобы избежать строк os.date (), вы можете создать временные метки с предварительно установленными датами, os.time принимает таблицу значений ключей для установки даты :
timestamp = os.time({year=2019, month=1, day=n})
Итеративно увеличивая переменную n
, вы будете получать отметку времени для каждого нового n
дня после 1 января 2019 года. Например,
os.date("%Y-%m-%d %H-%M-%S",os.time({year=2019,month=1,day=900})
--> 2021-06-18 12-00-00
Если вы не можете сохранить переменную дня, чтобы отслеживать (между перезапусками приложения), получите текущий «сегодняшний» день и выполните итерации оттуда:
os.date("%Y-%m-%d %H-%M-%S",
os.time({year=os.date("%Y"),month=os.date("%m"),day=os.date("%d")+n}
)
Использование os.date с пользовательским форматом и os.time делает ваш код независимым от текущей установленной даты locale .
После того, как вы определили метку времени первого задания, сместите второе фактическое задание на пять минут secondTaskTimestamp = fistTaskTimestamp + 5*60
(или снова используйте os.time).Ваш таймер должен сравнивать только отметки времени.
Теперь, когда вам нужно изменить предварительно настроенное время, вам нужно будет только изменить дату и время первой задачи, и вторая задача будет автоматическисмещение.
Связанный: Как выполнить глобальную функцию в определенный день в определенное время в Lua?