Exibe o número de horas desde uma hora específica no bash

1

Eu tenho um comando que gera uma única data no formato que eu quiser. Agora eu preciso de uma maneira simples de calcular (com bash) quantas horas se passaram desde aquela data (o padrão é yyyy-mm-dd hh:mm ).

A única maneira de pensar nisso é usar vários if s, mas esperava que houvesse um método rápido de uma linha. Talvez usando o comando date ?

Apenas um exemplo de clareza:
Agora é 2011-05-23 12:16 .
O primeiro comando gera 2011-05-22 08:34 .
Eu preciso de um comando (ou alguns comandos canalizados) que saem 27 , como em: "27 horas (arredondado para baixo) passaram desde a data especificada".

Existe uma maneira rápida e simples de conseguir isso? Ou sou obrigado a usar condicionais (não que isso seja excessivamente complexo).

    
por Malabarba 23.05.2011 / 16:24

1 resposta

2
De modo geral, para os tempos no Unix, é mais simples converter os dois datetimes em Unix Timestamps (que são segundos desde 1970-1 -1 00:00), subtraia um do outro e, no seu caso, divida por 3600 para obter as horas.

SECONDS='expr $(date -d "20110523" +%s) - $(date -d "20110522" +%s)'
expr $SECONDS / 3600

#Return is 24
    
por Oli 23.05.2011 / 16:36