Подтвердить что ты не робот

Вычесть дни с даты в bash

Я хочу вычесть "количество дней" с даты в bash. Я пытаюсь что-то вроде этого.

echo $dataset_date #output is 2013-08-07

echo $date_diff #output is 2   

p_dataset_date=`$dataset_date --date="-$date_diff days" +%Y-%m-%d` # Getting Error
4b9b3361

Ответ 1

Указание даты неверно. Вместо этого скажите:

date --date="${dataset_date} -${date_diff} day" +%Y-%m-%d

Если вам нужно сохранить его в переменной, используйте $(...):

p_dataset_date=$(date --date="${dataset_date} -${date_diff} day" +%Y-%m-%d)

Ответ 2

Для меня это имеет смысл, если я поставлю опции снаружи (легче сгруппировать), в случае, если я захочу больше их.

date -d "$dataset_date - $date_diff days" +%Y-%m-%d

Где:

 1. -d --------------------------------- options, in this case 
                                         followed need to be date 
                                         in string format (look up on $ man date)
 2. "$dataset_date - $date_diff days" -- date arithmetic, more 
                                         have a look at article by [PETER LEUNG][1]
 3. +%Y-%m-%d -------------------------- your desired format, year-month-day

Ответ 3

Вот мое решение:

echo $[$[$(date +%s)-$(date -d "2015-03-03 00:00:00" +%s)]/60/60/24]

Он подсчитывает количество дней между текущим и 2015-03-03 00:00:00

Ответ 4

один лайнер:

yesterday=$(date -d "$date -1 days" +"%Y%m%d")

Ответ 5

Ниже код дает вам дату на один день меньше

ONE=1
dataset_date=`date`
TODAY=`date -d "$dataset_date - $ONE days" +%d-%b-%G`
echo $TODAY