1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
| #!/bin/ksh
calculdate() {
# Calcule une date à plus ou moins n jours
#
# Exemple :
# Quelle est la date dans 15 jours (date début = date du jour) ?
# calculdate -d 8 (aujourd'hui = 18/05/2015)
# --> 26/05/2015
# Quelle est la date de demain (date début = date du jour) ?
# calculdate (aujourd'hui = 18/05/2015)
# --> 19/05/2015
# Quelle est la date il y a 7 jour (date début = date du jour) ?
# calculdate -d 8 -s moins (aujourd'hui = 18/05/2015)
# --> 10/05/2015
# Quelle est la date 5 jours après le 30/06/2015 ?
# calculdate -j 30 -m 05 -a 2015 -d 5
# --> 04/06/2015
echo debug $# $*
typeset -u sens
# jour=$1
# mois=$2
# annee=$3
# delai=$4
# sens=$5
while getopts :j:m:a:d:s: c
do
case $c in
j) jour=$OPTARG;;
m) mois=$OPTARG;;
a) annee=$OPTARG;;
d) delai=$OPTARG;;
s) sens=$OPTARG;;
*) echo "Parametre non connu !!!"
echo "calculdate [ -j <JJ> -m <MM> -a <CCAA> ] [ -d <nn> ] [ -s <PLUS|MOIS> ]"
return 99;;
esac
done
# Initialisation des variables
test -z $jour && jour=$(date '+%d')
test -z $mois && mois=$(date '+%m')
test -z $annee && annee=$(date '+%Y')
test -z $delai && delai=1
test -z $sens && sens="PLUS"
test $sens == "MOINS" && avant="ago" || avant=""
# formatage sur 2 chiffres du jour et du mois
#jour=$(printf "%02d" $jour)
#mois=$(printf "%02d" $mois)
# Calcul de la date voulue
newdate=$(date -d "$annee-$mois-$jour $delai day $avant" '+%d/%m/%Y')
# Réponse de la fonction
echo $newdate
return 0
}
echo "Fonction calculdate :"
echo "--> Quelle est la date 5 jours après le 30/04/2015 ? (calculdate -j 30 -m 4 -a 2015 -d 5)"
calculdate -j 30 -m 04 -a 2015 -d 5
calculdate -j 20 -m 03 -a 2014 -d 4
exit 0 |
Partager