Als u nodig hebt om het verschil te vinden tussen de twee keer, of ze verschillen slechts een paar seconden of door het jaar, kunt u dit doen in de GNU versie van Unix met de "date" commando.Echter, de procedure is niet intuïtief, de datum opdracht niet direct zorgen voor een vlag of een argument voor deze procedure.Bovendien meerdere versies van het date commando bestaan ​​Unix.Merk op dat wat werkt in de GNU versie van de datum commando zal niet werken met de BSD-versie.

Unix Epoch

  • De sleutel tot het oplossen van dit probleem is te begrijpen hoe de computer eigenlijk houdt van tijd.Een Unix-computer slaat alle tijden als het aantal seconden dat is verstreken sinds de Unix Epoch.De Unix Epoch is middernacht van 1 januari 1970.

Aan de seconden sinds de Unix Epoch

  • U kunt het aantal seconden sinds de Unix Epoch naar een bepaalde datum met een combinatie van de "+% s"vlag en de" --date "commando.Typ het volgende in een schil om het aantal seconden van de Unix E

    poch krijgen tot 11 maart 2011:

    datum --date 2011-03-11 +% s

    Het resultaat zal zijn: 1299823200. U kunt elke dag gebruiken-tijd formaat dat u kunt ontleden door de "date" commando in dit script.U kunt de "man date" typt in uw shell om over alle geldige datum formaten lezen.

De oplossing

  • Zoals je kunt elke datum of tijd in een Unix-compatibel formaat te nemen en te converteren naar de seconden voor of sinds de Unix Epoch, kunt u het verschil tussen twee willekeurige tijdstippen vinden door het aftrekken van de resultatentwee van deze opdrachten.

    Typ de volgende opdrachten in uw shell:

    d1 = datum --date 2011-03-11 +% s

    d2 = datum --date 2010-05-12 +% s

    echo "$ (((d1-d2))) seconden verschil "

    In de eerste twee regels, de 'karakter is geen aanhalingsteken.Het is een back-tick.U kunt dit personage vinden aan de linkerkant van de toets "1" op een standaard US toetsenbord.

    De output moet het verschil tussen de twee keer seconden.Als u nodig hebt, kunt u deze omzetten in minuten, uren, dagen, en ga zo maar door te delen door het aantal seconden in een minuut, minuten in een uur of uren in een dag.

Een Script

  • Omdat het lastig 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 = datum --date $ 1 +% s

    d2 = datum --date $ 2 +% s

    echo "$ (((d1-d2))) seconden verschil "

    Dit verandert een paar dingen.De bovenste regel laat de huidige shell weten dat u dit script om de taal van de "bash" shell schrijven.Als u de data in de twee datum commando's te vervangen door "$ 1" en "$ 2", kunt u nieuwe data doorgeven aan het script elke keer dat u het uit te voeren.Nogmaals, in de eerste twee regels, de back-tick ', geen enkele quote gebruikt u.

    Sla uw 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 vinden door te typen:

    ./timediff.sh 2010/09/13 1981/01/14