Вычесть дни с даты в 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
Ответы
Ответ 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