Se você precisa encontrar a diferença entre duas horas , se eles diferem por apenas alguns segundos , ou por anos, você pode fazer isso na versão GNU do Unix com o comando "date" . No entanto, o procedimento não é intuitivo, como o comando data não fornece diretamente uma bandeira ou argumento para este procedimento. Além disso, várias versões do comando date existem no Unix. Note-se que o que funciona na versão GNU do comando date não irá funcionar com a versão BSD . Unix Epoch
A chave para resolver este problema é a compreensão de como o computador realmente mantém a noção do tempo . Um computador Unix armazena todos os tempos como o número de segundos que se passaram desde a Era Unix . O Unix Epoch é meia-noite de 1 de janeiro de 1970.
Obtendo os segundos desde o Unix Epoch
Você pode obter o número de segundos desde a Era Unix para um determinado data usando uma combinação da bandeira "+ % s" e o comando - " data " . Digite o seguinte em um shell para obter o número de segundos a partir do Unix Epoch a 11 de Março de 2011:
data - data 2011-03-11 + % s
O resultado será : 1299823200 . Você pode usar qualquer formato de data e hora que você pode analisar pelo comando "date" neste script. Você pode digitar "data de homem " em sua concha para ler sobre todos os formatos de data válida.
A Solução
Como você pode tomar qualquer data determinada ou vez em um formato compatível com o Unix e convertê-lo para os segundos antes ou desde a Era Unix , você pode encontrar a diferença entre quaisquer duas vezes subtraindo os resultados de dois destes comandos.
Digite os seguintes comandos em sua shell:
d1 = `date - data 2011-03-11 + % s`
d2 = `date - data 2010-05-12 + % s`
echo "$ ( ( ( d1- d2 ) ) ) segundos diferença "
Nas duas primeiras linhas , o ' personagem não é uma marca de cotação. É uma crase . Você pode localizar este personagem para a esquerda da tecla "1" em um teclado padrão EUA.
A saída deve ser a diferença entre as duas vezes em segundos. Se você precisar, você pode convertê-lo em minutos , horas, dias , e assim por diante , dividindo pelo número de segundos em um minuto, minutos em uma hora ou horas em um dia.
Um Script
Como seria um incômodo para digitar esses três comandos longos de cada vez, você deve compactá-lo em um script. Abra o seu editor de texto favorito e cole o seguinte :
# /usr /bin /env festa
d1 = `date - date $ 1 + % s`
d2 = `date - date $ 2 + % s`
echo " $ ( (( d1- d2 ))) segundos diferença "
Isso muda algumas coisas. A linha superior permite que o shell atual sabe que você escrever este script para usar a linguagem do shell " bash" . Como você substituir as datas nos dois comandos de data com "$ 1" e "$ 2", você pode passar novas datas para o script cada vez que você executá-lo. Mais uma vez, nas duas primeiras linhas , você usa a crase ` , nem uma única citação.
Salve o script com o nome de" timediff.sh " e execute o comando " chmod + x timediff.sh "em sua concha para deixar Unix sabe que ele tem permissão para executar esta como um script
Após fazer isso , você pode encontrar a diferença entre duas datas e horas digitando: .
. /timediff.sh 2010/09/13 1981/01/14