Diferença entre datas em hora no bash

0

Como posso encontrar a diferença entre duas datas que estão no formato

date +"%H-%M-%d-%m-%Y"

E também quero a diferença em horas. Como posso encontrar isso usando um único comando?

    
por Akshay Kumar 25.02.2016 / 12:04

1 resposta

1

Se as datas estiverem em um arquivo, uma por linha, por exemplo:

16-49-24-02-2016
16-49-25-02-2016

Então você pode usar awk :

awk -F- 'NR==1 {
  then = mktime(sprintf("%s %s %s %s %s 00", $5, $4, $3, $1, $2))
}
NR==2 {
  now = mktime(sprintf("%s %s %s %s %s 00", $5, $4, $3, $1, $2)); 
  printf "%s\n", (now - then)/3600
}' input.txt

A função mktime espera tempo em YYYY MM DD HH MM SS , então dividimos o registro de data e hora determinado e o convertemos para esse formato (usando 00 por segundos). A diferença entre os timestamps é em segundos, então nós dividimos por 3600 para obter as horas.

    
por muru 25.02.2016 / 12:33