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)