Utility functions for logging time-related information.
Summary
Functions
Converts durations ([h, min, s, ms]) and units into a formatted string.
Splits milliseconds into [hours, minutes, seconds, milliseconds].
Functions
@spec format([non_neg_integer()], keyword()) :: String.t()
Converts durations ([h, min, s, ms]) and units into a formatted string.
Options
:units- list of strings to use as units. Defaults to[" h", " min", " s", " ms"].:show_zeroes- whether to show zero values. Defaults tofalse.:two_digits- whether to pad single-digit values with a leading zero. Defaults tofalse.
Examples
iex> alias Buzzword.Cache.Log.TimeUtil
iex> TimeUtil.format([1, 1, 6, 1])
"1 h 1 min 6 s 1 ms"
iex> alias Buzzword.Cache.Log.TimeUtil
iex> TimeUtil.format([1, 1, 6, 1], units: [:hr, :min, :sec])
"1hr 1min 6sec"
iex> alias Buzzword.Cache.Log.TimeUtil
iex> TimeUtil.format([1, 1, 6, 1], units: [" hour(s)", " minute(s)"])
"1 hour(s) 1 minute(s)"
iex> alias Buzzword.Cache.Log.TimeUtil
iex> TimeUtil.format([1, 1, 6, 1], units: [" H", " MIN", " S"])
"1 H 1 MIN 6 S"
iex> alias Buzzword.Cache.Log.TimeUtil
iex> TimeUtil.format([1, 1, 6, 1], units: ["H", "MIN", "S", "MS"])
"1H 1MIN 6S 1MS"
iex> alias Buzzword.Cache.Log.TimeUtil
iex> TimeUtil.format([1, 1, 0, 1])
"1 h 1 min 1 ms"
iex> alias Buzzword.Cache.Log.TimeUtil
iex> TimeUtil.format([1, 1, 0, 1], show_zeroes: true)
"1 h 1 min 0 s 1 ms"
iex> alias Buzzword.Cache.Log.TimeUtil
iex> TimeUtil.format([1, 1, 0, 1], show_zeroes: true, two_digits: true)
"01 h 01 min 00 s 01 ms"
iex> alias Buzzword.Cache.Log.TimeUtil
iex> options = [show_zeroes: true, two_digits: true]
iex> TimeUtil.format([1234, 1, 0, 199], options)
"1234 h 01 min 00 s 199 ms"
iex> alias Buzzword.Cache.Log.TimeUtil
iex> TimeUtil.format([1, 1, 0, 1], two_digits: true)
"01 h 01 min 01 ms"
@spec split(non_neg_integer()) :: [non_neg_integer()]
Splits milliseconds into [hours, minutes, seconds, milliseconds].
Examples
iex> alias Buzzword.Cache.Log.TimeUtil
iex> TimeUtil.split(3_666_001)
[1, 1, 6, 1]
iex> alias Buzzword.Cache.Log.TimeUtil
iex> TimeUtil.split(3_660_001)
[1, 1, 0, 1]
iex> alias Buzzword.Cache.Log.TimeUtil
iex> TimeUtil.split(3_606_001)
[1, 0, 6, 1]