how to add a day to date in bash?

24

8

For example, I have date: 4 August 1993 and I want to add 348 days to it, how can I do it in bash?

inothemo

Posted 2009-09-23T13:46:48.453

Reputation: 1 699

Answers

30

Just use the date command with -d option:

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

You can change the output format if you want:

$ date -d "1983-08-04 2 days" +%Y-%m-%d
1983-08-06                                           

Dave Webb

Posted 2009-09-23T13:46:48.453

Reputation: 10 126

1You can use the OP's date format, too: date -d "4 August 1993 348 days" +"%d %B %Y" – Paused until further notice. – 2009-09-23T16:54:35.257

1According to man date: %F full date; same as %Y-%m-%d – jperelli – 2012-05-02T21:58:55.243

12

In bash on Mac OS X, you can do this:

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

Output: 1994-07-18

Tom Söderlund

Posted 2009-09-23T13:46:48.453

Reputation: 241

1Been looking for this for a while. I appreciate. I wanted to replace the number "348" with a variable from a bash script. I ended up with NEXT_DATE=$(date -j -v +$(( incrementDays ))d -f "%Y-%m-%d" "1993-08-04" +%Y-%m-%d) for anyone else looking to do this. – Ian G – 2019-01-15T21:11:50.213

1

Here is a little more complex usage of this:

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

or with pipes:

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

Bohdan

Posted 2009-09-23T13:46:48.453

Reputation: 111