GNU/Linux >> Linux Esercitazione >  >> Linux

Come ottengo la differenza tra due date sotto bash

Proponendo questa soluzione che utilizza bc :

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 prende una data arbitraria e la converte in un dato formato (come in questo caso +%s.%N , un float di secondi) . Tieni presente che

-d non fa parte della data POSIX. [Ma] fintanto che [non stai] lavorando su distribuzioni come Solaris ([OP] l'ha etichettato come linux e non unix) [tu] dovresti essere bravo. :)

(commento di jaypal singh su questa risposta)

Per riconvertirlo in leggibile dall'uomo, puoi usare:
date $2 -d @0$diff #Pad diff with leading zero

Dove $2 again è un formato di data vedi per esempio qui


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

Linux
  1. Come controllare la data di installazione del tuo sistema operativo Linux?

  2. La differenza tra [[ $a ==Z* ]] e [ $a ==Z* ]?

  3. Linux:come eliminare i file creati tra due volte?

  4. Come ottenere il Tty in cui è in esecuzione Bash?

  5. Ottieni l'ora corrente in secondi da Epoch su Linux, Bash

Come ottenere la data e l'ora correnti in Python

Come trovare la differenza tra due directory usando gli strumenti Diff e Meld

Come ottenere l'orologio per mostrare la data?

Qual è la differenza tra #!/usr/bin/env bash e #!/usr/bin/bash?

Come ottengo la directory assoluta di un file in bash?

Qual è la differenza tra l'esecuzione di uno script Bash e l'approvvigionamento?