question sur les dates

question sur les dates - Shell/Batch - Programmation

Marsh Posté le 22-02-2007 à 10:56:03    

Salut à tous
 
Je suis pas super calé en shell mais j'aurai besoin de gérer des dates dans un petit script :
 
Il s'agit d'un ksh de AIX
 
edit : les questions 1 et 2 ont été répondues, mais maintenant j'en ai une troisième :)  
 
j'ai une date avec un zéro devant (02/03/2008) et je voudrai transformer ça en une date sans zéro (2/3/2008) ... Vous avez une idée pour faire ça simplement ? parce que j'ai des idées assez compliquées, genre si jour<10 alors enlever le premier caractère ...

 
1- y a-t-il une commande pour savoir quelle était la date du dernier dimanche ?
 
2- comment puis-je m'y prendre pour vérifier qu'une date saisie en paramètre est valide ?
 
merci !
 
 
edit : les questions 1 et 2 ont été répondues, mais maintenant j'en ai une troisième :)  
 
j'ai une date avec un zéro devant (02/03/2008) et je voudrai transformer ça en une date sans zéro (2/3/2008) ... Vous avez une idée pour faire ça simplement ? parce que j'ai des idées assez compliquées, genre si jour<10 alors enlever le premier caractère ...


Message édité par vag de marrs le 06-03-2008 à 11:44:40
Reply

Marsh Posté le 22-02-2007 à 10:56:03   

Reply

Marsh Posté le 22-02-2007 à 12:33:07    

Je vais m'auto-répondre pour le 1/
 
merci ccm.net !
 

Code :
  1. GetDate()
  2. { # GetDate nDays [format]
  3. # Exemple d'utilisation: export NAMEDIR=$(GetDate -1 '+%Y.%m.%d')
  4. typeset -i nDays=$1; format=$2
  5. eval $(echo $TZ | sed '
  6. s!\([^-0-9]*\)\([-0-9]*\)\(.*\)!typeset -i localOffset=\2;zon1=\1;zon2=\3!')
  7. TZ=$zon1$((localOffset-24*nDays))$zon2 date $format
  8. }
  9. GetDateSunday() {
  10. case $(date +%a) in
  11.  Mon ) diff=-1;;
  12.  Tue ) diff=-2;;
  13.  Wed ) diff=-3;;
  14.  Thu ) diff=-4;;
  15.  Fri ) diff=-5;;
  16.  Sat ) diff=-6;;
  17.  Sun ) diff=0;;
  18. esac
  19. DATE_RESTO=$(GetDate $diff '+%d/%m/%Y')
  20. }

Reply

Marsh Posté le 22-02-2007 à 14:57:28    

Je vais également m'auto-répondre pour le 2/
 

Code :
  1. #------------------------------------------
  2. #Vérifier la date
  3. #param = date
  4. #utilisation : if $(VerifDate date) ; then
  5. #------------------------------------------
  6. VerifDate() {
  7. #On s'assure que la date est comprise entre le 01/01/2007 et le 31/12/2020
  8. if  [ $(echo $1 | cut -f1 -d/) -gt 0 ] &&
  9.   [ $(echo $1 | cut -f2 -d/) -gt 0 ] &&
  10.   [ $(echo $1 | cut -f3 -d/) -gt 2006 ] &&
  11.   [ $(echo $1 | cut -f1 -d/) -le 31 ] &&
  12.   [ $(echo $1 | cut -f2 -d/) -le 12 ] &&
  13.   [ $(echo $1 | cut -f3 -d/) -le 2020 ] ; then
  14.  echo true
  15. else
  16.  echo false
  17. fi
  18. }


Message édité par vag de marrs le 22-02-2007 à 14:57:47
Reply

Marsh Posté le 06-03-2008 à 11:44:46    

Bon je vais également m'auto répondre pour la troisième question :)

 

Je peux déclarer deux variables en integer, et y extraire le jour et le mois

 
Code :
  1. DATE=02/03/2008
  2. typeset -i JOUR=$(echo $DATE | cut -f1 -d/)
  3. typeset -i MOIS=$(echo $DATE | cut -f2 -d/)
  4. echo $JOUR.$MOIS

2.3


Message édité par vag de marrs le 06-03-2008 à 12:11:38
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed