как добавить день в дату в Bash?

24

Например, у меня есть дата: 4 августа 1993 года, и я хочу добавить к ней 348 дней, как я могу сделать это в bash?

inothemo
источник

Ответы:

30

Просто используйте dateкоманду с -dопцией:

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

Вы можете изменить формат вывода, если хотите:

$ date -d "1983-08-04 2 days" +%Y-%m-%d
1983-08-06                                           
Дэйв Уэбб
источник
1
Вы также можете использовать формат даты ОП:date -d "4 August 1993 348 days" +"%d %B %Y"
Приостановлено до дальнейшего уведомления.
1
В соответствии с датой мужчины:%F full date; same as %Y-%m-%d
jperelli
12

В bash на Mac OS X вы можете сделать это:

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

Выход: 1994-07-18

Том Сёдерлунд
источник
1
Я искал это некоторое время. Я ценю. Я хотел заменить число «348» на переменную из скрипта bash. Я в конечном итоге NEXT_DATE=$(date -j -v +$(( incrementDays ))d -f "%Y-%m-%d" "1993-08-04" +%Y-%m-%d)для тех, кто хочет сделать это.
Ян Г
1

Вот немного более сложное использование этого:

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

или с трубами:

seq 1 5 | xargs -I {} date -d "2014-02-01 {} days" +%Y-%m-%d
Богдана
источник