Я не знаю, почему вы думаете, что объединение списка с длиной 8 может быть любой проблемой, но если вы хотите быть очень быстрым, вы можете сделать:
my_time() ->
{H, M, S} = time(),
[$0 + H div 10, $0 + H rem 10, $:, $0 + M div 10, $0 + M rem 10, $:, $0 + S div 10, $0 + S rem 10].
Не существует правильных способов, есть более быстрые или медленные, более или менее потребляющие память и более или менее лаконичные решения.
Редактировать: Если вам нравится более краткая, но такая же производительность:
-define(DEC(X), $0 + X div 10, $0 + X rem 10).
my_time() ->
{H, M, S} = time(),
[?DEC(H), $:, ?DEC(M), $:, ?DEC(S)].