La chiave per risolvere questo problema è capire come il computer tiene in realtà la cognizione del tempo . Un computer Unix memorizza tutte le volte che il numero di secondi trascorsi dalla Unix Epoch . Il Unix Epoch è la mezzanotte del 1 ° gennaio 1970.
Ottenere i secondi dalla Unix Epoch
È possibile ottenere il numero di secondi dalla Unix Epoch a un dato data utilizzando una combinazione di tasti "+ % s" bandiera e il comando - " data" . Digitare quanto segue in una shell per ottenere il numero di secondi dalla Unix Epoch al 11 marzo 2011 :
data
- Data 2011-03-11 + % s
Il risultato sarà : 1299823200 . È possibile utilizzare qualsiasi formato di data-ora che è possibile analizzare con il comando "date" in questo script . È possibile digitare " Data l'uomo " nella vostra shell per leggere tutti i formati di data.
La soluzione
Come si può prendere ogni data o tempo in un formato compatibile con Unix e convertirlo i secondi prima o dopo l' Epoca Unix , è possibile calcolare la differenza tra le due volte sottraendo i risultati di due di questi comandi .
digitare i seguenti comandi nella vostra shell:
d1 = `date - data 2011-03-11 + % s`
d2 = `date - data 2010-05-12 + % s`
echo " $ ( ( ( d1 - d2 ))) secondi differenza "
Nelle prime due righe , il ` carattere non è un segno di citazione . Si tratta di un back -tick . È possibile individuare il carattere a sinistra del tasto "1" su una tastiera statunitense standard.
L'output dovrebbe essere la differenza tra le due volte in pochi secondi . Se è necessario , è possibile convertire questo in minuti , ore, giorni , e così via , dividendo per il numero di secondi in un minuto , minuto in un'ora o di ore in un giorno .
A Script
Come sarebbe un fastidio di digitare i tre comandi lunghi ogni volta, è necessario incapsulare in una sceneggiatura . Aprite il vostro editor di testo preferito e incollare il seguente :
# /usr /bin /env bash
d1 = `date - data 1 $ + % s`
d2 = `date - data di $ 2 + % s`
echo " $ ( ( ( d1 - d2 ))) secondi differenza "
Questo cambia un paio di cose . La riga superiore consente la shell corrente sa che si scrive questo script per usare il linguaggio della shell "bash " . Come si sostituiscono le date dei due comandi di data con il "$ 1" e "$ 2 ", è possibile passare nuove date per lo script ogni volta che lo si esegue . Ancora una volta , nelle prime due righe , si utilizza il back- tick ` , non un solo preventivo.
Salvare lo script con il nome di" timediff.sh " ed eseguire il comando " chmod + x timediff.sh . " nella shell Unix per far sapere che ha permesso di eseguire questo come script
Dopo aver fatto questo , è possibile calcolare la differenza tra due date e gli orari digitando:
. /timediff.sh 2010/09/13 1981/01/14
sistemi © www.354353.com