Retourner une valeur sur base d'une date

Résolu/Fermé
Peter Parker - 10 févr. 2012 à 12:18
OlivrT Messages postés 323 Date d'inscription lundi 2 novembre 2009 Statut Membre Dernière intervention 24 mai 2012 - 10 févr. 2012 à 16:34
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

dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
10 févr. 2012 à 15:44
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 lundi 2 novembre 2009 Statut Membre Dernière intervention 24 mai 2012 36
10 févr. 2012 à 16:34
Toi t'es le dieu du Unix !! :-) Un grand merci
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 407
10 févr. 2012 à 12:25
Salut,

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

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

$
0
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 dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 407
10 févr. 2012 à 13:04
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 dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 407
10 févr. 2012 à 13:18
En complément pour Gnu-date (paquetage coreutils) : http://www.sunfreeware.com/introduction.html
0
Utilisateur anonyme
10 févr. 2012 à 13:00
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