web-dev-qa-db-fra.com

soustraire des jours d'une date en bash

Je veux soustraire "nombre de jours" d'une date en bash. J'essaye quelque chose comme ça ..

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
34
Shivam Agrawal

Vous indiquez la date de manière incorrecte. Dites plutôt:

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

Si vous devez le stocker dans une variable, utilisez $(...):

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

bon mot:

yesterday=$(date -d "$date -1 days" +"%Y%m%d")
4
Jeremy

Voici ma solution:

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

Il calcule le nombre de jours entre maintenant et 2015-03-03 00:00:

3
Paweł Dulęba

Pour moi, cela a plus de sens si je mets les options à l'extérieur (plus faciles à regrouper), au cas où j'en souhaiterais plus.

date -d "$dataset_date - $date_diff days" +%Y-%m-%d

Où:

 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
Juto

Le code ci-dessous vous donne un jour de moins

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