bc e calculos de horas - Duração de tempo [RESOLVIDO]

1. bc e calculos de horas - Duração de tempo [RESOLVIDO]

Morpheus
Minions

(usa Nenhuma)

Enviado em 06/06/2024 - 02:48h

No Calc do LibreOffice =SOMA(B2-A2)

Inicio Fim Duração
00:03:00 00:22:00 00:19:00


Podemos usar o comando bc para gerar a variável $duracao (00:19:00)?


$ echo "00:22:00 - 00:03:00" | bc
(standard_in) 1: illegal character: :
(standard_in) 1: syntax error
(standard_in) 1: illegal character: :
(standard_in) 1: illegal character: :
(standard_in) 1: syntax error
(standard_in) 1: illegal character: :





  


2. MELHOR RESPOSTA

Marcelo Oliver
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


3. Re: bc e calculos de horas - Duração de tempo [RESOLVIDO]

Alexa Bolada
alexabolada

(usa Debian)

Enviado em 06/06/2024 - 02:48h

Para calcular a duração de tempo utilizando o comando bc, você pode fazer o seguinte:

```bash
# echo "00:22:00 - 00:03:00" | bc
```

Isso vai subtrair o tempo de início do tempo final, resultando na duração de 00:19:00.

Espero ter ajudado! ?


4. Re: bc e calculos de horas - Duração de tempo [RESOLVIDO]

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 06/06/2024 - 16:11h


Minions escreveu:

No Calc do LibreOffice =SOMA(B2-A2)

Inicio Fim Duração
00:03:00 00:22:00 00:19:00


Podemos usar o comando bc para gerar a variável $duracao (00:19:00)?


$ echo "00:22:00 - 00:03:00" | bc
(standard_in) 1: illegal character: :
(standard_in) 1: syntax error
(standard_in) 1: illegal character: :
(standard_in) 1: illegal character: :
(standard_in) 1: syntax error
(standard_in) 1: illegal character: :

Minions, boa tarde!
Não é possível usar o 'bc' para calculo de horas na forma apresentada!
O 'bc' não entende o formato de horas....
Sugestão:
TZ="UTC" printf '%()T\n' $(($(date -d"00:22:00" +%s) - $(date -d"00:03:00" +%s)))
00:19:00



______________________________________________________________________
Att.: Marcelo Oliver
______________________________________________________________________



5. Re: bc e calculos de horas - Duração de tempo [RESOLVIDO]

Samuel Leonardo
SamL

(usa XUbuntu)

Enviado em 06/06/2024 - 17:23h


msoliver escreveu:


Minions escreveu:

No Calc do LibreOffice =SOMA(B2-A2)

Inicio Fim Duração
00:03:00 00:22:00 00:19:00


Podemos usar o comando bc para gerar a variável $duracao (00:19:00)?


$ echo "00:22:00 - 00:03:00" | bc
(standard_in) 1: illegal character: :
(standard_in) 1: syntax error
(standard_in) 1: illegal character: :
(standard_in) 1: illegal character: :
(standard_in) 1: syntax error
(standard_in) 1: illegal character: :

Minions, boa tarde!
Não é possível usar o 'bc' para calculo de horas na forma apresentada!
O 'bc' não entende o formato de horas....
Sugestão:
TZ="UTC" printf '%()T\n' $(($(date -d"00:22:00" +%s) - $(date -d"00:03:00" +%s)))
00:19:00



______________________________________________________________________
Att.: Marcelo Oliver
______________________________________________________________________

Marcelo, tu é o cara do shell mesmo! Fico impressionado como tu consegue ligar as coisas no shell script com tanta facilidade. Viva o treinamento prático e a arte do autodidatismo, coisa que não se aprende em escola!


https://tutorialprofissa.blogspot.com/ blog com tutoriais de programação em geral
https://nerdki.blogspot.com/ acessa ai, blog dedicado Paranóia!
https://github.com/cpusam com o bug fix vem a perfeição!


6. Re: bc e calculos de horas - Duração de tempo

aguamole
aguamole

(usa KUbuntu)

Enviado em 07/06/2024 - 06:14h

@Minions Quando vc ver a hora em 00:00:00 significa segundos, minutos, hora, já o ".00" significa o segundo dividido por 100(chamado de centésimos de segundo), se fosse ".000" seria o segundo dividido por 1000(chamado de milésimo de segundo ou milissegundo).

Tenha um bom dia.


7. Re: bc e calculos de horas - Duração de tempo

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 07/06/2024 - 16:54h

Minions escreveu:


msoliver escreveu:

Não é possível usar o 'bc' para calculo de horas na forma apresentada!
O 'bc' não entende o formato de horas....

Sugestão:
[code]TZ="UTC" printf '%()T\n' $(($(date -d"00:22:00" +%s) - $(date -d"00:03:00" +%s)))
00:19:00


O ffmpeg em alguns tutoriais mostra 00:00:00.00 esse .00 o que seria? tem alguma diferença no resultado da variável TZ


Minions, como explicado acima, o que vem, após o ponto,
é a "fração do segundo"
Atente-se a var TZ="UTC"....
Se não for setada, no caso acima, o resultado é: 21:19:00
Outro detalhe,
o printf não usa decimal para horas, teria que usar o date...
E ainda, o bash não faz calculo com decimal....
A opção seria, bc ou awk.....
______________________________________________________________________
Att.: Marcelo Oliver


8. Re: bc e calculos de horas - Duração de tempo [RESOLVIDO]

aguamole
aguamole

(usa KUbuntu)

Enviado em 08/06/2024 - 12:53h


Minions escreveu:


msoliver escreveu:

como explicado acima, o que vem, após o ponto,
é a "fração do segundo"

Atente-se a var TZ="UTC"....
Se não for setada, no caso acima, o resultado é: 21:19:00
Outro detalhe,
o printf não usa decimal para horas, teria que usar o date...
E ainda, o bash não faz calculo com decimal....
A opção seria, bc ou awk.....



A falta ou não do .00 no comando ffmpeg não vai interferi no resultado final?


date +%s --date="00:00:00"

ffmpeg -ss 00:00:00.00


Vai interferir em um resultado de 1 segundo para mais ou para menos, vai depender de sua implementação, o Bash ele arredonda para o numero mais próximo.








Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts