msoliver
(usa Debian)
Enviado em 18/06/2024 - 17:43h
Minions escreveu:
msoliver escreveu:
Sugestão:
TZ="UTC" printf '%()T\n' $(($(date -d"00:22:00" +%s) - $(date -d"00:03:00" +%s)))
00:19:00
Boa noite Marcelo,
O que vem depois do ponto não é calculado pelo comando date?
$ TZ="UTC" printf '%()T\n' $(($(date -d"00:22:00
.2" +%s) - $(date -d"00:03:00
.5" +%s)))
00:19:00
Boa tarde Minions.
Para "pegar" a fração de segundos no comando date, use:
date +%s.%N # 9 dígitos
date +%s.%2N # 2 dígitos
date +%s.%3N # 3 dígitos, e assim vai.....até o 9
No exemplo postado:
TZ="UTC" printf '%()T\n' $(($(date -d"00:22:00
.2" +%s) - $(date -d"00:03:00
.5" +%s)))
Não tem a parte decimal, como já explicado anteriormente....
E pelos seguintes motivos:
o comando:
printf "%()T" argumento
Aceita somente número inteiro
o Bash não trabalha com casas decimais
A sintaxe do date, está errada:
date -d"00:22:00.2" +%s
Correto:
date -d"00:22:00.20" +%s.%2N
#--------------------------------------------#
Exemplo:
bc <<< "scale=3;$(date -d"1970-01-01 00:22:00.90" +%s.%2N) - $(date -d"1970-01-01 00:03:00.20" +%s.%2N)"
1140.70
date -ud"@1140.70" +%X.%2N
00:19:00.70
É isso....
Bem simples....
Att.: Marcelo Oliver