从bash中的日期减去天数

Shi*_*wal 39 linux bash shell

我想从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
Run Code Online (Sandbox Code Playgroud)

dev*_*ull 43

您错误地指定了日期.相反,说:

date --date="${dataset_date} -${date_diff} day" +%Y-%m-%d
Run Code Online (Sandbox Code Playgroud)

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

p_dataset_date=$(date --date="${dataset_date} -${date_diff} day" +%Y-%m-%d)
Run Code Online (Sandbox Code Playgroud)


小智 7

如果您不在 linux,也许是 mac 或其他地方,这将不起作用。你可以检查这个:

yesterday=$(date  -v-1d    +"%Y-%m-%d")
Run Code Online (Sandbox Code Playgroud)

要获得更多详细信息,您还可以查看

man date
Run Code Online (Sandbox Code Playgroud)

  • 获取“日期:无效选项 - 'v'” (2认同)

Jut*_*uto 6

对我来说,如果我把选项放在外面(更容易分组)更有意义,以防我需要更多选项。

date -d "$dataset_date - $date_diff days" +%Y-%m-%d
Run Code Online (Sandbox Code Playgroud)

在哪里:

 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
Run Code Online (Sandbox Code Playgroud)


Jer*_*emy 5

一班

yesterday=$(date -d "$date -1 days" +"%Y%m%d")
Run Code Online (Sandbox Code Playgroud)