我想从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
答案 0 :(得分:36)
您指定的日期不正确。相反,请说:
date --date="${dataset_date} -${date_diff} day" +%Y-%m-%d
如果您需要将其存储在变量中,请使用$(...)
:
p_dataset_date=$(date --date="${dataset_date} -${date_diff} day" +%Y-%m-%d)
答案 1 :(得分:3)
对我来说,如果我把选项放在外面(更容易分组)会更有意义,以防万一我想要更多。
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
答案 2 :(得分:3)
这是我的解决方案:
echo $[$[$(date +%s)-$(date -d "2015-03-03 00:00:00" +%s)]/60/60/24]
它计算 now 和 2015-03-03 00:00:00
之间的天数答案 3 :(得分:3)
如果您不在Linux(可能是Mac或其他地方)上,则将无法正常工作。 您可以检查以下内容:
yesterday=$(date -v-1d +"%Y-%m-%d")
要获取更多详细信息,您还可以查看
man date
答案 4 :(得分:2)
一个班轮:
yesterday=$(date -d "$date -1 days" +"%Y%m%d")
答案 5 :(得分:0)
下面的代码为您提供日期较短的日期
ONE=1
dataset_date=`date`
TODAY=`date -d "$dataset_date - $ONE days" +%d-%b-%G`
echo $TODAY
答案 6 :(得分:0)
这是我的解决方案:
today=$(date +%Y%m%d)
yesterday="$(date -d "$today - 1 days" +%Y%m%d)"
echo $today
echo $yesterday