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.
A voir également:

4 réponses

dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637
 
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
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
zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   6 431
 
Salut,

$ date -d '20120210 5 days' '+%Y%m%d'
20120215

$ date -d '20120210 5 days ago' '+%Y%m%d'
20120205

$
0
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
zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   6 431
 
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
zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   6 431
 
En complément pour Gnu-date (paquetage coreutils) : http://www.sunfreeware.com/introduction.html
0
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