in reply to Converting Seconds to Nice Format
Limitations are integer seconds and up to 9999999 days. Both would be easy to remedy. But it does handle singular and plural units. For example, print PrettyTime(1234561) prints 14 days, 6 hrs, 56 mins, 1 sec Eliminating zeroes is harder, though, because join sticks its delimiter in even when map returns undef. Leading zeroes are no easier either, because map doesn't respond to a last. For these you might have to resort to a foreach with an internal unshift (eliminates the reverse) into a results array. Then do the join.sub PrettyTime { my $s = int(shift); join(', ', reverse map {my $t = $s % $_->[0]; $s /= $_->[0]; $t.$_-> +[1].($t > 1 ? 's' : '')} ([60, ' sec'], [60, ' min'], [24, ' hr'], [9 +999999, ' day'])) }
|
|---|