elapsed
| Definition: |
string res = elapsed(atom s, min_s=0, string fmt="")
-- or -- string res = elapsed_short(atom s, min_s=0, string fmt="") |
| Description: | Convert a time in seconds to a human-readable string. |
| pwa/p2js: | Supported. |
| Comments: |
Technically this is not part of timedate but a standalone autoinclude (builtins\pelapsed.e)
s: a time in seconds to convert to a human-readable string. min_s: a value, if non-zero, below which "" should be returned. fmt: optional extra formatting for non-"" results, eg " (%s)" would add/also omit the brackets in the [non-zero-min_s] "" case. This is a trivial routine designed for general purpose use/approximations; for more precise timings, such as benchmark results, sprintf("%3.2fs",s) is probably more appropriate. A type check error occurs if s exceeds 100 billion years (probably fixable, but left as is to catch bad input). The short form returns a string in the format (([minus][N year[s], ][N week[s], ][N day[s], ]|[-])[N:[0]]N:[0]N|[-]Ns) For long form results, see Examples below. To explain that short form value more explicitly: if the result contains no ':', it is seconds (and has a trailing s), eg "3s" if the result contains one ':', it is minutes:seconds (':' at [-3]), eg "2:30" if the result contains two ':', it is hours:minutes:seconds (':' at [-6,-3]), eg "2:30:00" (if you want two and a half hours to appear as "2:30", chop 3 chars off the result!) if required, the result is prefixed with "y year[s]", "w week[s]", and "d day[s]", ie in longhand, see technicalia. Negative year, week, and day values are prefixed with "minus ", negative hours/mins/secs with (just the one) "-". Neither routine makes any attempt to express duration in months, decades, centuries, or millenia. |
| Example: |
procedure ees(sequence tests)
for i=1 to length(tests) do
atom s = tests[i]
printf(1,"%50s vs %s\n",{elapsed(s),elapsed_short(s)})
end for
end procedure
ees({12.34,120,1234,123456,120*60,60*60*24*364,60*60*24*364-1,60*60*24*365})
-- Output, comparing std vs short forms:
-- 12.3s vs 12s
-- 2 minutes vs 2:00
-- 20 minutes and 34s vs 20:34
-- 1 day, 10 hours, 17 minutes and 36s vs 1 day, 10:17:36
-- 2 hours vs 2:00:00
-- 52 weeks vs 52 weeks
-- 51 weeks, 6 days, 23 hours, 59 minutes and 59s vs 51 weeks, 6 days, 23:59:59
-- 1 year vs 1 year
|