2011-09-20 126 views
2

我有兩個使用time:now()(一個存儲在過去的應用變量中,一個是當前時間)創建的時間戳。我需要找出它們之間的差異(最好在幾分鐘內)。我怎麼做?KRL:比較兩個時間戳

我已經試過這句法,但是解析器不喜歡它:

diff = time:now() - original_time; 

time:compare()不給我足夠的信息,並time:add()是什麼,我需要相反。似乎沒有任何其他適用的time functions documented

回答

2

時間函數返回時間字符串,不是時間對象。要計算經過的時間,您必須將時間字符串轉換爲紀元時間(自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

+0

'diff'似乎總是返回0,甚至當我有不同的時間戳。例如:'b = time:add(time:now(),{「minutes」:-5}); diff = time:now() - b;'有什麼想法爲什麼? –

+0

我道歉,我只回答了你的部分問題,而不是你想要達到的目標。我會調整答案。 – MEH

+0

efoo-ebar也是正確的 – MEH