Скрипт получения необходимого времени
Добавлено: 10 авг 2013, 16:15
При написании серии скриптов столкнулся с необходимостью отсрочить первый запуск шедулера на некоторое время, а в дальнейшем запускать его с малым периодом. В результате сотрудничества с челом с ником Illinory (ник не местный, просто это его визитка, чел плотно сидел в WOW, выдавал неплохие результаты, под ним его знают многие) родился маленький такой кусочек кода, позволяющий получить время для подстановки в соответствующие поля.
Естественно, при других дельтах времени придется писать другие условия, но хоть будет с чего стартовать.
Код: Выделить всё
#1. Задаём переменную для разделителя (у меня формат времени хх:хх:хх, поэтому разделитель - двоеточие).
:local Mysymbol ":";
#2. Извлекаем два первых символа из значения времени и производим необходимую операцию (в моём случае я прибавил единицу, т. е. увеличил время на час).
:local MyTime1 ([:pick [/system clock get time] 0 2]+1);
#3. Извлекаем остальные символы из времени
:local MyTime2 [:pick [/system clock get time] 3 8];
#4. Пишем условие, которое не даёт превратить в дальнейшем преобразовании 24 часа в 1 день (может получится как результат сложения 23 часа + 1).
:if ($MyTime1="24") do={ :set MyTime1 "00";};
#5. Наконец, назначаем глобальную переменную и обращаем простое числовое выражение с разделителями (получается после сложения) во время.
#Эта переменная и будет использоваться в других скриптах.
:global TimePlus [:totime ($MyTime1.$Mysymbol.$MyTime2)];
#6. Логи, при отладке раскоментировать, по ним легче разобраться, на каком этапе идет сбой.
#:log info $MyTime1;
#:log info $MyTime2;
#:log info $TimePlus;
Естественно, при других дельтах времени придется писать другие условия, но хоть будет с чего стартовать.