GNU/Linux >> Tutoriels Linux >  >> Linux

Calculer rapidement les différences de date ?

Je souhaite souvent effectuer des calculs de date rapides, tels que :

  • Quelle est la différence entre ces deux dates ?
  • Quelle est la date n semaines après cette autre date ?

J'ouvre généralement un calendrier et compte les jours, mais je pense qu'il devrait y avoir un programme/script que je peux utiliser pour faire ce genre de calculs. Des suggestions ?

Réponse acceptée :

Les "n semaines après une date" sont faciles avec GNU date(1) :

$ date -d 'now + 3 weeks'
Tue Dec  6 23:58:04 EST 2011
$ date -d 'Aug 4 + 3 weeks'
Thu Aug 25 00:00:00 EST 2011
$ date -d 'Jan 1 1982 + 11 weeks'
Fri Mar 19 00:00:00 EST 1982

Je ne connais pas de moyen simple de calculer la différence entre deux dates, mais vous pouvez intégrer un peu de logique autour de date(1) avec une fonction shell.

datediff() {
    d1=$(date -d "$1" +%s)
    d2=$(date -d "$2" +%s)
    echo $(( (d1 - d2) / 86400 )) days
}
$ datediff '1 Nov' '1 Aug'  # Note: answer should be 92 days but in my timezone, DST starts between the dates.
91 days

Échange d1 et d2 si vous voulez le calcul de la date dans l'autre sens, ou devenez un peu plus sophistiqué pour que cela n'ait pas d'importance. De plus, s'il y a une transition non DST à DST dans l'intervalle, l'un des jours ne durera que 23 heures; vous pouvez compenser en ajoutant ½ journée à la somme.

echo $(( (((d1-d2) > 0 ? (d1-d2) : (d2-d1)) + 43200) / 86400 )) days

Linux
  1. date Exemples de commandes sous Linux

  2. calculer l'espace disque total utilisé par les fichiers de plus de 180 jours à l'aide de la recherche

  3. soustraire des jours d'une date en bash

  4. Comment puis-je ajouter X jours à ce jour et obtenir une nouvelle date ?

  5. Bash :calcule le temps écoulé entre deux horodatages

pfSense vs Sophos :les principales différences

Ansible vs Kubernetes :comprendre les différences

Commande de date sous Linux

7 exemples de commande de date sous Linux

Nom de code et date de sortie d'Ubuntu 22.10

Calculer les jours depuis le 01/01/1970