comment ajouter un jour à ce jour en bash?

24

Par exemple, j'ai la date: 4 août 1993 et ​​je veux y ajouter 348 jours, comment puis-je le faire en bash?

inothemo
la source

Réponses:

30

Utilisez simplement la datecommande avec -doption:

$ date -d "1983-08-04 348 days"
Tue Jul 17 00:00:00 BST 1984  

Vous pouvez modifier le format de sortie si vous le souhaitez:

$ date -d "1983-08-04 2 days" +%Y-%m-%d
1983-08-06                                           
Dave Webb
la source
1
Vous pouvez également utiliser le format de date de l'OP:date -d "4 August 1993 348 days" +"%d %B %Y"
pause jusqu'à nouvel ordre.
1
Selon la date de l'homme:%F full date; same as %Y-%m-%d
jperelli
12

En bash sur Mac OS X, vous pouvez faire ceci:

date -j -v +348d -f "%Y-%m-%d" "1993-08-04" +%Y-%m-%d

Sortie: 1994-07-18

Tom Söderlund
la source
1
Je cherche ça depuis un moment. J'apprécie. Je voulais remplacer le nombre "348" par une variable d'un script bash. Je me suis retrouvé avec NEXT_DATE=$(date -j -v +$(( incrementDays ))d -f "%Y-%m-%d" "1993-08-04" +%Y-%m-%d)pour tous ceux qui cherchent à faire ça.
Ian G
1

Voici une utilisation un peu plus complexe de ceci:

for i in `seq 1 5`;
do;
  date -d "2014-02-01 $i days" +%Y-%m-%d;
done;

ou avec des tuyaux:

seq 1 5 | xargs -I {} date -d "2014-02-01 {} days" +%Y-%m-%d
Bohdan
la source