diff --git a/nselib/stdnse.lua b/nselib/stdnse.lua index 3a30c7f5a..f7c7e9193 100644 --- a/nselib/stdnse.lua +++ b/nselib/stdnse.lua @@ -559,6 +559,26 @@ function format_timestamp(t, offset) end end +--- Format a time interval into a string +-- +-- String is in the same format as format_difftime +-- @param interval A time interval in seconds +-- @return The time interval in string format +function format_time(interval) + + local sec = interval % 60 + interval = floor(interval / 60) + local min = interval % 60 + interval = floor(interval / 60) + local hr = interval % 24 + interval = floor(interval / 24) + + local s = string.format("%dd%02dh%02dm%02gs", + interval, hr, min, sec) + -- trim off leading 0 and "empty" units + return string.match(s, "([1-9].*)") or "0s" +end + --- Format the difference between times t2 and t1 -- into a string -- @@ -610,30 +630,7 @@ function format_difftime(t2, t1) yeardiff = 0 end - local s, sec, min - s = "" - -- Seconds (pad to two digits). - sec = d % 60 - d = floor(d / 60) - if d == 0 and yeardiff == 0 then - return sign .. format("%gs", sec) .. s - end - s = format("%02gs", sec) .. s - -- Minutes (pad to two digits). - min = d % 60 - d = floor(d / 60) - if d == 0 and yeardiff == 0 then - return sign .. format("%dm", min) .. s - end - s = format("%02dm", min) .. s - -- Hours. - s = format("%dh", d % 24) .. s - d = floor(d / 24) - if d == 0 and yeardiff == 0 then - return sign .. s - end - -- Days. - s = format("%dd", d) .. s + local s = format_time(d) if yeardiff == 0 then return sign .. s end -- Years. s = format("%dy", yeardiff) .. s