Als u het verschil tussen twee tijden te vinden, of ze verschillen slechts door een paar seconden of per jaar , kunt u dit doen in de GNU versie van Unix met de "date " commando . Echter , de procedure is niet intuïtief , als de date commando niet direct zorgen voor een vlag of een argument voor deze procedure . Bovendien , verschillende versies van het date commando bestaan Unix . Merk op dat wat werkt in de GNU versie van het date commando zal niet werken met de BSD -versie . Unix Epoch De sleutel voor de oplossing van dit probleem is het begrijpen hoe de computer eigenlijk houdt de tijd bij . Een Unix computer slaat alle maal het aantal seconden dat is verstreken sinds de Unix Epoch . De Unix Epoch is middernacht op 1 januari 1970. Aan de Seconds Sinds de Unix Epoch U kunt het aantal seconden te krijgen sinds de Unix Epoch om een bepaalde date met een combinatie van de " + % s " vlag en de " - date " commando . Typ het volgende in een shell om het aantal seconden te krijgen van de Unix Epoch tot 11 maart 2011 : datum - date 2011-03-11 + % s Het resultaat zal zijn : 1299823200 . U kunt een datum - tijd formaat dat u kunt ontleden door de "date " commando in dit script gebruiken . U kunt ' man date ' typt in je shell te lezen over alle geldige datum formaten . The Solution Als u een bepaalde datum of kunnen nemen tijd in een Unix- compatibel formaat en converteren naar de seconden vóór of sinds de Unix Epoch , kunt u het verschil tussen twee keer door het aftrekken van de resultaten van twee van deze opdrachten vinden . Typ de volgende commando's in uw shell : d1 = ` date - date 2011-03-11 + % s ` d2 = ` date - date 2010-05-12 + % s ` echo " $ ( ( ( d1 - d2 ) ) ) seconden verschil " In de eerste twee regels , de ` karakter is niet een aanhalingsteken . Het is een back -tick . U kunt dit karakter gelegen links van de " 1 " toets op een standaard US toetsenbord. Output moet het verschil tussen de twee keren in seconden . Als u nodig hebt , kunt u deze omzetten in minuten , uren , dagen , en zo verder door te delen door het aantal seconden in een minuut , minuten in een uur of uren in een dag . Een script Omdat het lastig uit te typen die drie lange commando's elke keer zou zijn , moet je het in te kapselen in een script . Open uw favoriete tekstverwerker en plak de volgende : # /usr /bin /env bash d1 = ` date - datum $ 1 + % s ` d2 = ` date - datum 2 $ + % s ` echo " $ ( ( ( d1 - d2 ) ) ) seconden verschil " Dit verandert een paar dingen . De bovenste regel laat de huidige shell weten dat je schrijft dit script om de taal van de ' bash ' shell gebruiken . Als u de data in de twee datum commando te vervangen door "$ 1 " en "$ 2 ", kunt u nieuwe data elke keer dat je het draait doorgeven aan het script . Nogmaals , in de eerste twee regels , de back -tick ' , geen enkele offerte gebruikt u . Sla je script met de naam " timediff.sh " en voer het commando " chmod + x timediff.sh . : "in je shell te laten Unix weten dat het toestemming heeft om deze draaien als een script Nadat u dit doet , kunt u het verschil tussen twee datums en tijden door te typen vinden . /timediff.sh 2010/09/13 1981/01/14
|