Функции времени возвращают время строка , а не объект времени. Чтобы рассчитать прошедшее время, вам нужно будет преобразовать строку времени в время эпохи (секунды с 1970 года ...). К счастью, время эпохи - это один из форматов, поддерживаемых strftime.
foo = time:now();
efoo = time:strftime(foo,"%s);
Оператор минус на самом деле чувствителен к начальным пробелам. Это в списке вещей, которые нужно обработать из парсера, но у меня просто не было времени, чтобы добраться до него. Вот рабочее правило:
rule first_rule {
select when pageview ".*" setting ()
pre {
foo = time:now();
bar = time:add(foo,{"minutes": -5});
ebar = time:strftime(bar,"%s");
efoo = time:strftime(foo,"%s");
diff = efoo-ebar;
}
notify("-5 minutes in seconds", diff) with sticky = true;
}
![enter image description here](https://i.stack.imgur.com/XvCO1.png)