Convert seconds to compound duration: Difference between revisions
Content added Content deleted
mNo edit summary |
No edit summary |
||
Line 545: | Line 545: | ||
86400 sec is 1 d |
86400 sec is 1 d |
||
6000000 sec is 9 wk, 6 d, 10 hr, 40 min |
6000000 sec is 9 wk, 6 d, 10 hr, 40 min |
||
</pre> |
|||
=={{header|D}}== |
|||
<lang d> |
|||
import std.stdio, std.conv, std.algorithm; |
|||
immutable uint SECSPERWEEK = 604_800; |
|||
immutable uint SECSPERDAY = 86_400; |
|||
immutable uint SECSPERHOUR = 3_600; |
|||
immutable uint SECSPERMIN = 60; |
|||
string ConvertSeconds(in uint seconds) |
|||
{ |
|||
uint rem = seconds; |
|||
uint weeks = rem / SECSPERWEEK; |
|||
rem %= SECSPERWEEK; |
|||
uint days = rem / SECSPERDAY; |
|||
rem %= SECSPERDAY; |
|||
uint hours = rem / SECSPERHOUR; |
|||
rem %= SECSPERHOUR; |
|||
uint mins = rem / SECSPERMIN; |
|||
rem %= SECSPERMIN; |
|||
string formatted = ""; |
|||
(weeks != 0) ? formatted ~= (weeks.to!string ~ " wk, ") : formatted; |
|||
(days != 0) ? formatted ~= (days.to!string ~ " d, ") : formatted; |
|||
(hours != 0) ? formatted ~= (hours.to!string ~ " hr, ") : formatted; |
|||
(mins != 0) ? formatted ~= (mins.to!string ~ " min, ") : formatted; |
|||
(rem != 0) ? formatted ~= (rem.to!string ~ " sec") : formatted; |
|||
if (formatted.endsWith(", ")) return formatted[0..$-2]; |
|||
return formatted; |
|||
} |
|||
void main() |
|||
{ |
|||
7_259.ConvertSeconds.writeln; |
|||
86_400.ConvertSeconds.writeln; |
|||
6_000_000.ConvertSeconds.writeln; |
|||
} |
|||
</lang> |
|||
{{out}} |
|||
<pre> |
|||
2 hr, 59 sec |
|||
1 d |
|||
9 wk, 6 d, 10 hr, 40 min |
|||
</pre> |
</pre> |
||