|
|
|
|
Bonjour,
j'utilise la fonction ci-dessous, copiée du net et qui me retourne parfaitement la date de la veille par exemple.
Cela fonctionne si j'enlève jusqu'à 6 jours, si j'enlève 7, la fonctionne me retourne une mauvaise date :-(
Quelqu'un pourrait-il me dire pourquoi ? et me corriger cette fonction ?
Merci d'avance
GetDate()
{ # GetDate nDays [format]
# Exemple d'utilisation: export NAMEDIR=$(GetDate -1 '+%Y%m%d')
typeset -i nDays=$1; format=$2
eval $(echo $TZ | sed '
s!\([^-0-9]*\)\([-0-9]*\)\(.*\)!typeset -i localOffset=\2;zon1=\1;zon2=\3!')
TZ=$zon1$((localOffset-24*nDays))$zon2 date $format
}
Exemple, nous sommes le 02 nov 2009
TODAY=$(GetDate 0 '+%Y%m%d')
echo "Date du jour : $TODAY"
#echo retourne "Date du jour : 20091102"
TODAY=$(GetDate -6 '+%Y%m%d')
echo "Date du jour -6: $TODAY"
#echo retourne "Date du jour : 20091027"
TODAY=$(GetDate -7 '+%Y%m%d')
echo "Date du jour -7: $TODAY"
#echo retourne "Date du jour : 20091102" ????
Configuration: Windows XP Internet Explorer 6.0
Voilà j'ai copié ton code :
|
Ca : "jp@MDK:~/tmpfs ssh$" c'est mon répertoire de travail via "ssh" et "$" mon prompt (invite de commande) ;-\
|
Tout à fait, sous Unix.
|
Ben comme je l'ai dit lors de mon premier post, j'ai trouvé cette fonction sur le net.
|
Affiche le contenu de $TZ :
echo $TZ Si rien ne s'affiche, rajoute "set -xv" en dessous du shebang de ton script (en dessous de la 1ère ligne qui doit ressembler à un truc du genre #!/bin/sh ) : #!/bin/sh set -xv Lances le script et affiche la sortie... $ man woman Il n'y a pas de page de manuel pour woman. |
GetDate()
|
Essaie comme ça :
GetDate()
{ # GetDate nDays [format]
echo "TZ = $TZ"
typeset -i nDays=$1; format=$2
eval $(echo $TZ | sed '
s!\([^-0-9]*\)\([-0-9]*\)\(.*\)!typeset -i localOffset=\2;zon1=\1;zon2=\3!')
TZ=$zon1$((localOffset-24*nDays))$zon2 date $format
echo "TZ vaut $TZ"
echo "zone1 = $zone1
echo "zone2 = $zone2
echo "localOffset = $localOffset"
}
d=$(GetDate 0 '+%Y%m%d')
echo "lundi dernier : $d"
exit
Ce sera peut être plus explicite... $ man woman Il n'y a pas de page de manuel pour woman. |
Répondre à OlivrT
|
Bonjour,
> redfox@mandriva[192.168.1.2]:~$ DATE_STAMP=`TZ=CST date -d '7 days ago' +%y%m%d` > redfox@mandriva[192.168.1.2]:~$ echo $DATE_STAMP 091103 > redfox@mandriva[192.168.1.2]:~$ l'inspiration et une mine d'informations : http://www.unix.com/... un penguin sur la banquise ! |
Répondre à OlivrT
|
+- jours définis dans une variable DAY
$ DAY=7 $ perl -e 'use POSIX qw(strftime); print strftime "%a %b %e %H:%M:%S %Y\n", localtime(time()+3600*24*$ARGV[0])' -- $DAY Thu Nov 19 11:50:18 2009 $ DAY=-7 $ perl -e 'use POSIX qw(strftime); print strftime "%a %b %e %H:%M:%S %Y\n", localtime(time()+3600*24*$ARGV[0])' -- $DAY Thu Nov 5 11:50:36 2009 $ MaDateMoins7Jours=$(perl -e 'use POSIX qw(strftime); print strftime "%a %b %e %H:%M:%S %Y\n", localtime(time()+3600*24*$ARGV[0])' -- $DAY) $ echo $MaDateMoins7Jours Thu Nov 5 11:53:26 2009 |
Salut "dubceck"
|