GNU/Linux >> Znalost Linux >  >> Linux

Jak zjistím rozdíl mezi dvěma daty pod bash

Navrhujeme toto řešení, které používá 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 vezme libovolné datum a převede ho do daného formátu (jako v tomto případě +%s.%N , float sekund) . Uvědomte si to

-d není součástí data POSIX. [Ale] dokud [nepracujete] na distribucích jako Solaris ([OP] to označilo linux a ne unix), [měli byste] být dobří. :)

(komentář od jaypal singh k této odpovědi)

Chcete-li jej převést zpět na čitelný pro člověka, můžete použít:
date $2 -d @0$diff #Pad diff with leading zero

Kde $2 opět je formát data viz například zde


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

Linux
  1. Jak zkontrolovat datum instalace vašeho linuxového operačního systému?

  2. Rozdíl mezi operátory Bash [[ Vs [ Vs ( Vs ((?

  3. Rozdíl mezi [[ $a ==Z* ]] a [ $a ==Z* ]?

  1. Jak získat Tty ve kterém Bash běží?

  2. Získejte aktuální čas v sekundách od epochy na Linuxu, Bash

  3. Jak získat stav ukončení smyčky v bash

  1. Jak získat datum/čas vytvoření souboru v Bash/Debian?

  2. Jak získat rozdíl (pouze doplňky) mezi dvěma soubory v linuxu

  3. Jak mohu získat slova mezi prvními dvěma výskyty textu/vzoru?