21 lines
585 B
Elixir
21 lines
585 B
Elixir
defmodule Convert do
|
|
@minute 60
|
|
@hour @minute*60
|
|
@day @hour*24
|
|
@week @day*7
|
|
@divisor [@week, @day, @hour, @minute, 1]
|
|
|
|
def sec_to_str(sec) do
|
|
{_, [s, m, h, d, w]} =
|
|
Enum.reduce(@divisor, {sec,[]}, fn divisor,{n,acc} ->
|
|
{rem(n,divisor), [div(n,divisor) | acc]}
|
|
end)
|
|
["#{w} wk", "#{d} d", "#{h} hr", "#{m} min", "#{s} sec"]
|
|
|> Enum.reject(fn str -> String.starts_with?(str, "0") end)
|
|
|> Enum.join(", ")
|
|
end
|
|
end
|
|
|
|
Enum.each([7259, 86400, 6000000], fn sec ->
|
|
:io.fwrite "~10w sec : ~s~n", [sec, Convert.sec_to_str(sec)]
|
|
end)
|