Fonction GetDate, qui peut m'aider :-(
Résolu/Fermé
OlivrT
Messages postés
323
Date d'inscription
lundi 2 novembre 2009
Statut
Membre
Dernière intervention
24 mai 2012
-
10 nov. 2009 à 10:26
OlivrT Messages postés 323 Date d'inscription lundi 2 novembre 2009 Statut Membre Dernière intervention 24 mai 2012 - 12 nov. 2009 à 15:31
OlivrT Messages postés 323 Date d'inscription lundi 2 novembre 2009 Statut Membre Dernière intervention 24 mai 2012 - 12 nov. 2009 à 15:31
A voir également:
- Fonction GetDate, qui peut m'aider :-(
- Fonction si et - Guide
- Fonction moyenne excel - Guide
- Fonction somme excel - Guide
- Fonction remplacer word - Guide
- Fonction miroir - Guide
18 réponses
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
10 nov. 2009 à 10:36
10 nov. 2009 à 10:36
Salut,
Et un simple :
Ne fait pas l'affaire ?
Et un simple :
date --date='7 days ago' '+%Y%m%d'
Ne fait pas l'affaire ?
OlivrT
Messages postés
323
Date d'inscription
lundi 2 novembre 2009
Statut
Membre
Dernière intervention
24 mai 2012
36
10 nov. 2009 à 10:58
10 nov. 2009 à 10:58
je ne suis pas un "champion" en bash .. alors tu excuseras je l'espère mes erreurs, voilà ce que j'ai entré, est-ce correcte ?
D=$((`/bin/date '7 days ago' +'%Y%m%d'`))
echo "Date 7 jours avant : $D"
Cela me retourne "Bad conversion" :-(
D=$((`/bin/date '7 days ago' +'%Y%m%d'`))
echo "Date 7 jours avant : $D"
Cela me retourne "Bad conversion" :-(
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
10 nov. 2009 à 11:00
10 nov. 2009 à 11:00
jp@MDK:~/tmpfs ssh$ D=$(/bin/date -d '7 days ago' +'%Y%m%d') jp@MDK:~/tmpfs ssh$ echo $D 20091103 jp@MDK:~/tmpfs ssh$
;-))
OlivrT
Messages postés
323
Date d'inscription
lundi 2 novembre 2009
Statut
Membre
Dernière intervention
24 mai 2012
36
10 nov. 2009 à 11:13
10 nov. 2009 à 11:13
Voilà j'ai copié ton code :
~/tmpfs ssh$ D=$(/bin/date -d '7 days ago' +'%Y%m%d')
~/tmpfs ssh$ echo $D
Voici le résultat :
/bin/date: illegal option -- d
usage: date [-u] mmddHHMM[[cc]yy][.SS]
date [-u] [+format]
date -a [-]sss[.fff]
e.testdate[33]: /home/pirmez/tmpfs: not found
e.testdate[34]: /home/pirmez/tmpfs: not found
Apparement il ne trouve pas le répertoire "tmpfs", c'est quoi ce folder ?
~/tmpfs ssh$ D=$(/bin/date -d '7 days ago' +'%Y%m%d')
~/tmpfs ssh$ echo $D
Voici le résultat :
/bin/date: illegal option -- d
usage: date [-u] mmddHHMM[[cc]yy][.SS]
date [-u] [+format]
date -a [-]sss[.fff]
e.testdate[33]: /home/pirmez/tmpfs: not found
e.testdate[34]: /home/pirmez/tmpfs: not found
Apparement il ne trouve pas le répertoire "tmpfs", c'est quoi ce folder ?
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
10 nov. 2009 à 11:26
10 nov. 2009 à 11:26
Ca : "jp@MDK:~/tmpfs ssh$" c'est mon répertoire de travail via "ssh" et "$" mon prompt (invite de commande) ;-\
La commande seule c'est :
D=$(/bin/date -d '7 days ago' +'%Y%m%d')
Par contre le message d'erreur de la commande "date" me fait penser que tu travailles sur un système style Unix ou Solaris, non ?
La commande seule c'est :
D=$(/bin/date -d '7 days ago' +'%Y%m%d')
Par contre le message d'erreur de la commande "date" me fait penser que tu travailles sur un système style Unix ou Solaris, non ?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
OlivrT
Messages postés
323
Date d'inscription
lundi 2 novembre 2009
Statut
Membre
Dernière intervention
24 mai 2012
36
10 nov. 2009 à 11:43
10 nov. 2009 à 11:43
Tout à fait, sous Unix.
voilà j'ai codé exactement la ligne que tu as écrite et le résulat est :
/bin/date: illegal option -- d
usage: date [-u] mmddHHMM[[cc]yy][.SS]
date [-u] [+format]
date -a [-]sss[.fff]
J'ai essayé ceci :
D2=$((`/bin/date -d '7 days ago' +'%Y%m%d'`))
et j'ai le même résultat ...
voilà j'ai codé exactement la ligne que tu as écrite et le résulat est :
/bin/date: illegal option -- d
usage: date [-u] mmddHHMM[[cc]yy][.SS]
date [-u] [+format]
date -a [-]sss[.fff]
J'ai essayé ceci :
D2=$((`/bin/date -d '7 days ago' +'%Y%m%d'`))
et j'ai le même résultat ...
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
10 nov. 2009 à 11:49
10 nov. 2009 à 11:49
Du coup je comprends mieux l'intérêt de la fonction de ton 1er post, et apparemment il va falloir faire avec, vu que la commande "date" sur les systèmes Unix est beaucoup plus limitée que sous les distributions GNU/Linux, notamment au niveau des options ;-((
Par contre à quoi correspond la variable "$TZ" dans ta fonction ?
Par contre à quoi correspond la variable "$TZ" dans ta fonction ?
OlivrT
Messages postés
323
Date d'inscription
lundi 2 novembre 2009
Statut
Membre
Dernière intervention
24 mai 2012
36
10 nov. 2009 à 11:54
10 nov. 2009 à 11:54
Ben comme je l'ai dit lors de mon premier post, j'ai trouvé cette fonction sur le net.
Il était tout content le Olivier sauf que dans un des programmes je dois aller chercher la date du lundi précédént et paf ça marche plus :-(
Sincèrement j'y comprends quedal moi à cette fonction et je me demande bien pourquoi elle fonctionne jusque -6 et pas -7 ??? C'est pourquoi je fais appel aux spécialistes ;-)
Il était tout content le Olivier sauf que dans un des programmes je dois aller chercher la date du lundi précédént et paf ça marche plus :-(
Sincèrement j'y comprends quedal moi à cette fonction et je me demande bien pourquoi elle fonctionne jusque -6 et pas -7 ??? C'est pourquoi je fais appel aux spécialistes ;-)
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
10 nov. 2009 à 11:58
10 nov. 2009 à 11:58
Affiche le contenu de $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 ) :
Lances le script et affiche la sortie...
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...
OlivrT
Messages postés
323
Date d'inscription
lundi 2 novembre 2009
Statut
Membre
Dernière intervention
24 mai 2012
36
10 nov. 2009 à 12:03
10 nov. 2009 à 12:03
GetDate()
{ # GetDate nDays [format]
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"
}
d=$(GetDate 0 '+%Y%m%d')
echo "lundi dernier : $d"
exit
Resultat :
lundi dernier : 20091110
TZ vaut MET
On est dans la 4ème dimensio :-)
{ # GetDate nDays [format]
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"
}
d=$(GetDate 0 '+%Y%m%d')
echo "lundi dernier : $d"
exit
Resultat :
lundi dernier : 20091110
TZ vaut MET
On est dans la 4ème dimensio :-)
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
10 nov. 2009 à 12:17
10 nov. 2009 à 12:17
Essaie comme ça :
Ce sera peut être plus explicite...
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...
dubcek
Messages postés
18764
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
9 février 2025
5 624
10 nov. 2009 à 13:26
10 nov. 2009 à 13:26
hello
là où il n'y a pas de commande date GNU on peut utiliser perl
$ perl -e 'use POSIX qw(strftime); print strftime "%a %b %e %H:%M:%S %Y\n", localtime(time()-3600*24*7)'
Tue Nov 3 13:21:56 2009
là où il n'y a pas de commande date GNU on peut utiliser perl
$ perl -e 'use POSIX qw(strftime); print strftime "%a %b %e %H:%M:%S %Y\n", localtime(time()-3600*24*7)'
Tue Nov 3 13:21:56 2009
OlivrT
Messages postés
323
Date d'inscription
lundi 2 novembre 2009
Statut
Membre
Dernière intervention
24 mai 2012
36
10 nov. 2009 à 15:15
10 nov. 2009 à 15:15
voilà le résultat :
date : TZ = MET
20091110
TZ vaut MET
zone1 =
zone2 =
localOffset = 0
date : TZ = MET
20091110
TZ vaut MET
zone1 =
zone2 =
localOffset = 0
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
10 nov. 2009 à 15:17
10 nov. 2009 à 15:17
bob031
Messages postés
8158
Date d'inscription
samedi 7 août 2004
Statut
Membre
Dernière intervention
1 septembre 2014
473
10 nov. 2009 à 19:00
10 nov. 2009 à 19:00
Bonjour,
l'inspiration et une mine d'informations :
http://www.unix.com/answers-frequently-asked-questions/13785-yesterdays-date-date-arithmetic.html
> 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/answers-frequently-asked-questions/13785-yesterdays-date-date-arithmetic.html
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
10 nov. 2009 à 19:06
10 nov. 2009 à 19:06
Salut bobby,
Le problème c'est qu'il n'y a pas l'option "-d" sur les système Unix ;-((
Le problème c'est qu'il n'y a pas l'option "-d" sur les système Unix ;-((
bob031
Messages postés
8158
Date d'inscription
samedi 7 août 2004
Statut
Membre
Dernière intervention
1 septembre 2014
473
>
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
10 nov. 2009 à 19:09
10 nov. 2009 à 19:09
Hello,
Ha oui .../bin/date: illegal option -- d
désolé !
:-(
Ha oui .../bin/date: illegal option -- d
désolé !
:-(
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
>
bob031
Messages postés
8158
Date d'inscription
samedi 7 août 2004
Statut
Membre
Dernière intervention
1 septembre 2014
10 nov. 2009 à 19:10
10 nov. 2009 à 19:10
Y'a pô d'mal ;-)
OlivrT
Messages postés
323
Date d'inscription
lundi 2 novembre 2009
Statut
Membre
Dernière intervention
24 mai 2012
36
12 nov. 2009 à 10:29
12 nov. 2009 à 10:29
Qui peut alors me donner une fonction qui me retourne x jours en plus ou en moins en rapport avec la date du jour ? Je commence à désespérer là :-(
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
12 nov. 2009 à 11:44
12 nov. 2009 à 11:44
Post #12 !
OlivrT
Messages postés
323
Date d'inscription
lundi 2 novembre 2009
Statut
Membre
Dernière intervention
24 mai 2012
36
12 nov. 2009 à 11:46
12 nov. 2009 à 11:46
Merci ... mais euh ça doit ton truc perl machin synthaxiquement :-) ?
j'écris ceci ??
MaDateMoins7Jours=$ perl -e 'use POSIX qw(strftime); print strftime "%a %b %e %H:%M:%S %Y\n", localtime(time()-3600*24*7)'
j'écris ceci ??
MaDateMoins7Jours=$ perl -e 'use POSIX qw(strftime); print strftime "%a %b %e %H:%M:%S %Y\n", localtime(time()-3600*24*7)'
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
12 nov. 2009 à 11:55
12 nov. 2009 à 11:55
Tu remplace le dernier chiffre de "localtime(time()-3600*24*7)" par le chiffre correspondant au nombre de jours que tu veux soustraire.
L'exemple reprenait ta demande initiale, moins sept jours !
L'exemple reprenait ta demande initiale, moins sept jours !
dubcek
Messages postés
18764
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
9 février 2025
5 624
12 nov. 2009 à 11:55
12 nov. 2009 à 11:55
+- 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
OlivrT
Messages postés
323
Date d'inscription
lundi 2 novembre 2009
Statut
Membre
Dernière intervention
24 mai 2012
36
12 nov. 2009 à 13:53
12 nov. 2009 à 13:53
Salut "dubceck"
tout ce que tu as écrit .. ne fonctionne pas, par contre ceci c'est bon :
echo "7 jours en plus : "
DAY=-7
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 "Date vaudra : $MaDateMoins7Jours"
Encore une petite question, quels arguments dois-je écrire si je désire la date au format YYYYMMDD ?
tout ce que tu as écrit .. ne fonctionne pas, par contre ceci c'est bon :
echo "7 jours en plus : "
DAY=-7
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 "Date vaudra : $MaDateMoins7Jours"
Encore une petite question, quels arguments dois-je écrire si je désire la date au format YYYYMMDD ?
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
12 nov. 2009 à 14:00
12 nov. 2009 à 14:00
M'est d'avis que :
Devrait le faire...
print strftime "%Y%m%e\n"
Devrait le faire...
dubcek
Messages postés
18764
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
9 février 2025
5 624
12 nov. 2009 à 14:09
12 nov. 2009 à 14:09
ou "%Y%m%d\n"
il n'y a pas différence entre les 3 commandes perl, quelle est l'erreur ?
il n'y a pas différence entre les 3 commandes perl, quelle est l'erreur ?
OlivrT
Messages postés
323
Date d'inscription
lundi 2 novembre 2009
Statut
Membre
Dernière intervention
24 mai 2012
36
12 nov. 2009 à 15:31
12 nov. 2009 à 15:31
strftime "%Y%m%d" fonctionne ! merci à tous