Por durações de menos de 24 horas, em ksh93
, você pode fazer:
$ TZ=UTC0 printf '%(%T.%3N)T\n' '#86399.99'
23:59:59.990
Possivelmente, fazer o cálculo manualmente é relativamente fácil. E awk
com suas habilidades de matemática e formatação soa como a escolha mais óbvia:
$ awk -v t=123456789.123456 'BEGIN{
printf "%d:%02d:%06.3f\n", t/3600, (t/60)%60, t%60}'
34293:33:09.123
Assim como sua abordagem printf
, você pode ter alguns resultados inesperados devido ao arredondamento:
$ awk -v t=59.9999 'BEGIN{
printf "%d:%02d:%06.3f\n", t/3600, (t/60)%60, t%60}'
0:00:60.000
Então, você pode querer fazer:
$ awk -v t=599.9999 '
BEGIN{t=int(t*1000);
printf "%d:%02d:%02d.%03d\n", t/3600000, t/60000%60, t/1000%60, t%1000}'
0:09:59.999