65

我想从 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
4

7 回答 7

66

您指定的日期不正确。相反,说:

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

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

p_dataset_date=$(date --date="${dataset_date} -${date_diff} day" +%Y-%m-%d)
于 2013-08-12T06:22:47.530 回答
26

mac os x 的一个内衬:

yesterday=$(date -d "$date -1 days" +"%Y%m%d")
于 2018-11-15T19:00:58.790 回答
7

如果您不在 linux 上,可能是 mac 或其他地方,这将不起作用。你可以检查一下:

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

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

man date
于 2020-07-08T17:54:38.890 回答
4

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

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
于 2013-08-12T08:35:33.470 回答
3

这是我的解决方案:

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

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

于 2015-03-16T11:55:16.943 回答
2

这是我的解决方案:

today=$(date +%Y%m%d)
yesterday="$(date -d "$today - 1 days" +%Y%m%d)"
echo $today
echo $yesterday
于 2021-05-10T20:26:34.577 回答
1

下面的代码让你约会少一天

ONE=1
dataset_date=`date`
TODAY=`date -d "$dataset_date - $ONE days" +%d-%b-%G`
echo $TODAY
于 2014-10-07T10:10:23.847 回答