我目前正在使用以下代码将秒格式化为mm:ss格式。有更好的选择吗?
def formatted_length(length) do
minutes =
length/60
|> Float.floor()
|> round()
|> Integer.to_string()
seconds =
rem(length, 60)
|> Integer.to_string()
|> String.rjust(2, ?0)
minutes <> ":" <> seconds
end
Run Code Online (Sandbox Code Playgroud)
您的代码实际上是错误的:for 90
,它返回"2:30"
。
您可以使用div
整数除法来忽略小数部分。至于其余的内容,我将使用字符串插值来缩短代码:
defmodule Main do
def formatted_length(length) do
"#{div(length, 60)}:#{formatted_seconds(rem(length, 60))}"
end
defp formatted_seconds(s) when s < 10, do: "0#{s}"
defp formatted_seconds(s), do: "#{s}"
end
13 |> Main.formatted_length |> IO.puts
123 |> Main.formatted_length |> IO.puts
143 |> Main.formatted_length |> IO.puts
Run Code Online (Sandbox Code Playgroud)
输出:
0:13
2:03
2:23
Run Code Online (Sandbox Code Playgroud)