KRL: сравнение двух временных меток - PullRequest
2 голосов
/ 20 сентября 2011

У меня есть две метки времени, созданные с помощью time:now() (одна хранится в переменной приложения из прошлого, другая - в текущее время).Мне нужно найти разницу между ними (желательно в минутах).Как мне это сделать?

Я пробовал этот синтаксис, но синтаксический анализатор не понравился:

diff = time:now() - original_time;

time:compare() не дает мне достаточно информации, и time:add() - это противоположность того, что мне нужно.Похоже, что нет других применимых функций времени, документированных .

1 Ответ

2 голосов
/ 20 сентября 2011

Функции времени возвращают время строка , а не объект времени. Чтобы рассчитать прошедшее время, вам нужно будет преобразовать строку времени в время эпохи (секунды с 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

...