Me gustaría convertir la cadena a continuación en una marca de tiempo, ya hice esto en Hojas, pero me gustaría automatizar este proceso.
DESDE: 38740
HASTA: 00:38.74
En las hojas de Google , inserto la fórmula y funciona perfectamente.
=TEXT(A2/86400000,"mm:ss.00")En caparazón (bash) :
awk "BEGIN {print 38740/86400000}"¿Hay una forma de hacerlo usando shell o necesito usar algún lenguaje de programación más avanzado?
Otro enfoque de Bash
t=$(bc <<< 'scale=2; 38740/1000') d=$(date -d @"$t" --utc '+%M:%S.%N') echo "${d:0:9}" 00:38.740Con bash, usando la aritmética incorporada
str=38740 (( mins = str / 60000, str %= 60000, secs = str / 1000, msec = str % 1000 )) printf -v duration "%02d:%02d.%03d" "$mins" "$secs" "$msec" echo "$duration" # => 00:38.740Encapsulado en una función:
milliseconds_to_duration () { local mins secs msec local tmp=$1 (( mins = tmp / 60000, tmp %= 60000, secs = tmp / 1000, msec = tmp % 1000 )) printf "%02d:%02d.%03d\n" "$mins" "$secs" "$msec" }entonces
$ milliseconds_to_duration 38740 00:38.740