diff --git a/nselib/stdnse.lua b/nselib/stdnse.lua index f7c7e9193..a989c1392 100644 --- a/nselib/stdnse.lua +++ b/nselib/stdnse.lua @@ -562,21 +562,26 @@ end --- Format a time interval into a string -- -- String is in the same format as format_difftime --- @param interval A time interval in seconds +-- @param interval A time interval +-- @param unit The time unit division as a number. If interval is +-- in milliseconds, this is 1000 for instance. Default: 1 (seconds) -- @return The time interval in string format -function format_time(interval) +function format_time(interval, unit) + unit = unit or 1 + local precision = floor(math.log(unit, 10)) + debug1("precision: %d, unit: %d", precision, unit) - local sec = interval % 60 - interval = floor(interval / 60) + local sec = (interval % (60 * unit)) / unit + interval = floor(interval / (60 * unit)) local min = interval % 60 interval = floor(interval / 60) local hr = interval % 24 interval = floor(interval / 24) - local s = string.format("%dd%02dh%02dm%02gs", + local s = format("%dd%02dh%02dm%02.".. precision .."fs", interval, hr, min, sec) -- trim off leading 0 and "empty" units - return string.match(s, "([1-9].*)") or "0s" + return match(s, "([1-9].*)") or format("%0.".. precision .."fs", 0) end --- Format the difference between times t2 and t1