TRANSFORMAR SEGUNDOS EM HORAS [RESOLVIDO]

1. TRANSFORMAR SEGUNDOS EM HORAS [RESOLVIDO]

Patrick Carpezani
patrickcarpezani

(usa Debian)

Enviado em 20/06/2021 - 13:11h

Boa tarde pessoal!

Estou enfrentando um problema com o comando date, estou na seguinte situação:

Preciso pegar uma determinada hora no formato HH:mm:ss e transforma-la em segundos, depois pegar a hora atual que também está em HH:mm:ss e transformar em segundos, após isso realizar a subtração da hora atual e determinada hora, depois da subtração pegar o valor e exibir no seguinte formato HH:mm:ss

Exemplo:

hora: 11:04:05
date '+%s' --date "11:04:05" = 1624197845

hora atual: 11:49:00
date '+%s' --date "11:49:00" = 1624200600

hora atual - hora
echo 1624200600-1624197845 |bc = 2755

transformando em horas
date '+%T' --date "2755"

Nessa situação achei que daria certo, mas quando executo o comando date '+%T' --date "2755" eu recebo o seguinte erro:

date: data inválida “2755”

Já tentei de outras formas mas também recebo o mesmo erro, se alguém puder me ajudar eu agradeço desde já.

Atenciosamente,





  


2. MELHOR RESPOSTA

Mauriciodez
Mauriciodez

(usa Debian)

Enviado em 20/06/2021 - 14:01h


V aí se te ajuda



------------------------------------------------------| Linux User #621728 |------------------------------------------------------

" Nem sempre é amigo aquele que te tira do buraco !!! ( Saddam Hussein )"

------------------------------------------------------| Linux User #621728 |------------------------------------------------------



3. Re: TRANSFORMAR SEGUNDOS EM HORAS [RESOLVIDO]

Patrick Carpezani
patrickcarpezani

(usa Debian)

Enviado em 20/06/2021 - 15:28h


Mauriciodez escreveu:


V aí se te ajuda



------------------------------------------------------| Linux User #621728 |------------------------------------------------------

" Nem sempre é amigo aquele que te tira do buraco !!! ( Saddam Hussein )"

------------------------------------------------------| Linux User #621728 |------------------------------------------------------




Boa tarde!
Tudo bem?

Então eu vi esse post, me ajudou a entender como iria desenvolver, vou explicar a minha situação

Eu estou pegando o tempo de atividade de uma sessão SSH feita direto no terminal (tty) não consegui encontrar nenhum comando ou processo no Linux que me ajudasse (se souber compartilha por favor kkkk) então eu pensei, se eu pegar qual foi o início da sessão e realizar uma subtração pela hora atual eu consigo saber o tempo de atividade dessa sessão.

Até ai beleza, desenvolvi aquele pequeno código mas não deu certo, então graças a você que compartilhou o post e um outro exemplo escrito em outra linguagem de programação consegui desenvolver esse código:

# capturei o horário do inicio da sessão SSH que vem no formato "YYYY-MM-DDTHH:MM:SS-03:00"
CAPTURING_TIME=$(last --time-format iso |grep $2 |grep 'still logged in' |awk '{print $3}')
# formatei a captura para segundos
FORMATTING_TIME=$(date '+%s' --date "$CAPTURING_TIME")
# formatei a hora atual para segundos
TIME_NOW=$(date '+%s')
# fiz uma subtração da hora atual com a hora de inicio da sessão SSH (formatada)
TOTAL_SECONDS=$(echo "($TIME_NOW-$FORMATTING_TIME)" |bc)

# converti hora
HOURS=$(echo "($TOTAL_SECONDS/3600)" |bc)
# converti minutos
MINUTES=$(echo "(($TOTAL_SECONDS-($HOURS*3600))/60)" |bc)
# converti segundos
SECONDS=$(echo "($TOTAL_SECONDS%60)" |bc)

# aqui coloquei no padrão HH:mm:ss pois se eu só tivesse executado echo "$HOURS:$MINUTES:$SECONDS" ele viria no formato H:mm:ss
date '+%T' --date "$HOURS:$MINUTES:$SECONDS"

Então consegui resolver meu problema, irei finalizar esse post com resolvido mas se souber de outro jeito ou uma forma que encurte esse meu trecho de código, por favor compartilhe comigo, agradeço pela sua resposta.

Atenciosamente,


4. Re: TRANSFORMAR SEGUNDOS EM HORAS [RESOLVIDO]

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 20/06/2021 - 15:46h

patrickcarpezani escreveu:

Boa tarde pessoal!

Estou enfrentando um problema com o comando date, estou na seguinte situação:

Preciso pegar uma determinada hora no formato HH:mm:ss e transforma-la em segundos, depois pegar a hora atual que também está em HH:mm:ss e transformar em segundos, após isso realizar a subtração da hora atual e determinada hora, depois da subtração pegar o valor e exibir no seguinte formato HH:mm:ss

Exemplo:

hora: 11:04:05
date '+%s' --date "11:04:05" = 1624197845

hora atual: 11:49:00
date '+%s' --date "11:49:00" = 1624200600

hora atual - hora
echo 1624200600-1624197845 |bc = 2755

transformando em horas
date '+%T' --date "2755"

Nessa situação achei que daria certo, mas quando executo o comando date '+%T' --date "2755" eu recebo o seguinte erro:

date: data inválida “2755”

Já tentei de outras formas mas também recebo o mesmo erro, se alguém puder me ajudar eu agradeço desde já.
Atenciosamente,

Boa tarde, seguem sugestões:
dateutils.ddiff -f %H:%M:%S 2021-06-20T13:00:30 2021-06-20T13:40:00 

Ou
ini=$(date -d"2021-06-20 08:20:30" +%s)
fim=$(date +%s)
uts=$(bc <<<"scale=6;${fim} - ${ini}")
TZ=UTC date -d"@${uts}" +%H:%M:%S.%3N;
07:23:49.000

O seu comando date, deve ser:
TZ=UTC date -d'@2755' +%H:%M:%S


______________________________________________________________________
Importante: lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p'
Att.: Marcelo Oliver