GNU/Linux >> Tutoriels Linux >  >> Linux

Comment puis-je obtenir la différence entre deux dates sous bash

Proposer cette solution qui utilise 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 prend une date arbitraire et la convertit dans un format donné (comme dans ce cas +%s.%N , un float de secondes) . Sachez que

-d ne fait pas partie de la date POSIX. [Mais] tant que [vous] ne travaillez pas sur des distributions comme Solaris ([OP] l'a étiqueté linux et non unix), [vous] devriez être bon. :)

(commentaire de jaypal singh sur cette réponse)

Pour le reconvertir en texte lisible par l'homme, vous pouvez utiliser :
date $2 -d @0$diff #Pad diff with leading zero

$2 encore une fois est un format de date voir par exemple ici


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

Linux
  1. Comment vérifier la date d'installation de votre système d'exploitation Linux ?

  2. La différence entre les opérateurs bash [[ Vs [ Vs ( Vs ((?

  3. La Différence Entre [[ $a ==Z* ]] Et [ $a ==Z* ] ?

  4. Comment obtenir le Tty dans lequel Bash est en cours d'exécution ?

  5. Obtenez l'heure actuelle en secondes depuis l'époque sur Linux, Bash

Comment obtenir la date et l'heure actuelles en Python

Comment trouver la différence entre deux répertoires à l'aide des outils Diff et Meld

Linux – Comment supprimer des fichiers créés entre deux fois ?

Comment faire pour que l'horloge affiche la date ?

Quelle est la différence entre &> et >&en bash ?

Bash :calcule le temps écoulé entre deux horodatages