GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie erhalte ich die Differenz zwischen zwei Daten unter bash

Vorschlag dieser Lösung, die bc verwendet :

current="$(date +%s.%N)" #current date, precise to nanoseconds
old="$(date +%s.%N -d "$(sh some_script_that_gives_a_date.sh)")" #convert output to ns too
diff=$(echo "$current-$old" |bc)

date +%s.%N -d $1 nimmt ein beliebiges Datum und konvertiert es in ein vorgegebenes Format (wie in diesem Fall +%s.%N , ein float Sekunden) . Beachten Sie das

-d ist kein Teil des POSIX-Datums. [Aber] solange [Sie] nicht an Distributionen wie Solaris arbeiten ([OP] hat es mit Linux und nicht mit Unix gekennzeichnet) [Sie] sollten gut sein. :)

(Kommentar von Jaypal Singh zu dieser Antwort)

Um es wieder lesbar zu machen, können Sie Folgendes verwenden:
date $2 -d @0$diff #Pad diff with leading zero

Wobei $2 wieder ein Datumsformat siehe zB hier


let DIFF=(`date +%s -d 20120203`-`date +%s -d 20120115`)/86400
echo $DIFF

Linux
  1. Wie überprüfe ich das Installationsdatum Ihres Linux-Betriebssystems?

  2. Der Unterschied zwischen [[ $a ==Z* ]] und [ $a ==Z* ]?

  3. Wie bekomme ich das Tty, in dem Bash läuft?

  4. So erhalten Sie den Exit-Status in einer Bash-Schleife

  5. Wie bekomme ich Datum/Uhrzeit der Dateierstellung in Bash/Debian?

So erhalten Sie das aktuelle Datum und die aktuelle Uhrzeit in Python

So finden Sie den Unterschied zwischen zwei Verzeichnissen mit Diff- und Meld-Tools

Der Unterschied zwischen den Bash-Operatoren [[ Vs [ Vs ( Vs ((?

Linux – Wie lösche ich Dateien, die zwischen zwei Mal erstellt wurden?

Wie bekomme ich die Uhr dazu, das Datum anzuzeigen?

Wie lösche ich Dateien, die zwischen zwei Mal erstellt wurden?