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