从bash中的date中减去天数

我想从bash中的date中减去“天数”。 我正在尝试这样的事情

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 

Solutions Collecting From Web of "从bash中的date中减去天数"

您正在错误地指定日期。 相反,说:

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

如果您需要将其存储在变量中,请使用$(...)

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

这是我的解决方案:

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

它计算从现在2015-03-03 00:00:00之间的天数

对我来说,如果我把选项放在外面(更容易分组),以防万一我想要更多的选项,那就更有意义了。

 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 

下面的代码给你的日期有一天较少

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