Retourner une valeur sur base d'une date

Résolu
Peter Parker -  
OlivrT Messages postés 323 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
je voudrais trouver une commande ou une fonction qui, sur base d'une valeur qui représente une date au format YYYYMMDD, me retourne cette même valeur mais avec n jour en plus ou en moins.
Exemple:
v=20120210
nbre_jours=5
y=f_Add_Jours $v $nbre_jours
echo "$y"

Je travaille sur un système Solaris et mon shell est CSH.

4 réponses

  1. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    hello
    en perl
    $ D=20120210 ; J=5
    $ NEWD=$(perl -e 'use Time::Local;use POSIX qw(strftime);print strftime "%Y%m%d\n", localtime(timelocal(0,0,0,substr($ARGV[0],6,2),substr($ARGV[0],4,2)-1,substr($ARGV[0],0,4))+86400*$ARGV[1])' $D $J)
    $ 
    $ echo $NEWD
    20120215
    $ 
    $ J=-5
    $ NEWD=$(perl -e 'use Time::Local;use POSIX qw(strftime);print strftime "%Y%m%d\n", localtime(timelocal(0,0,0,substr($ARGV[0],6,2),substr($ARGV[0],4,2)-1,substr($ARGV[0],0,4))+86400*$ARGV[1])' $D $J)
    $ 
    $ echo $NEWD
    20120205
    $ 
    2
    1. OlivrT Messages postés 323 Date d'inscription   Statut Membre Dernière intervention   36
       
      Toi t'es le dieu du Unix !! :-) Un grand merci
      0
  2. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
     
    Salut,

    $ date -d '20120210 5 days' '+%Y%m%d'
    20120215
    
    $ date -d '20120210 5 days ago' '+%Y%m%d'
    20120205
    
    $
    0
  3. Peter Parker
     
    Cela ne fonctionne pas, j'ai le message d'erreur suivant :

    date: illegal option -- d
    usage: date [-u] mmddHHMM[[cc]yy][.SS]
    date [-u] [+format]
    date -a [-]sss[.fff]

    Comment faites-vous pour affecter le résultat à une variable ?
    Comme ceci ?
    v='date -d '20120210 5 days' +%Y%m%d"'
    0
    1. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
       
      Mea culpa, je n'avais pas vu la dernière ligne de ton post ;-(

      Comme dit par "qqchquicommenceparQ", il te faut passer par des programmes externes, ou bien installer une version gnu ;-\
      0
  4. Utilisateur anonyme
     
    salut,

    eh oui :( UNIX dispose rarement de commande GNU (dont 'date'), et pour les calculs de date sur ces systèmes, il est (à ce que j'ai pu observer) recommandé de passer par des commandes externes, de plus en plus installées en standard, telles que awk, perl
    0