|
|
|
|
Configuration: unix aix + shell KSH
|
Salut,
Je suis pas sûr d'avoir tout bien saisi là !!! Si c'est ça que tu veux (enfin, quelque chose d'approchant) : [jp@MDK tmpfs] $ A=23 [jp@MDK tmpfs] $ B=$(expr $A + 1) [jp@MDK tmpfs] $ echo $B 24 [jp@MDK tmpfs] $Je ne pense pas que ça puisse s'adapter à ce que tu veux faire... ;-)) Z'@+...che. JP : Zen, my Nuggets ! ;-) Le savoir n'est bon que s'il est partagé. |
|
Re-
Juste pour ta mise en forme un peu longuette, essaie ça : date "+%y%m%d" --date='1day';-)) Z'@+...che. JP : Zen, my Nuggets ! ;-) Le savoir n'est bon que s'il est partagé. |
|
Ben en fait, si j'ai une variable $1 contenant la valeur '20060831' par exemple, je voudrais, en ajoutant 1 jour obtenir la valeur '20060901' .
Il faudrait que je puisse convertir ma variable en date, ajouter 1 au jour et récupérer le résultat. suis-je plus clair !!! merci |
|
shell KSH, jour+1 à partir d'une variable
[81.255.193.xxx - smtp.organic.fr] Ajouté par Jip06 2006-09-01 12:31:55 (GMT+2) Statut : En cours Bonjour, je sais, j'ai déjà posté un message à ce sujet mais je n'ai pas eu de réponse satisfaisante. Pourtant ce n'est tout de m^me pas la lune que je veux attraper. En KSH, comment puis-je ajouter un jour à partir d'une date issu d'un paramètre saisi (string). Par exemple dans le script: datesaisi=$1 # on recupère 060831 # je voudrais faire +1 dans le jour et récuperer 060901 # il faut donc que je puisse convertir le format string en format date et faire + 1 au jour mais en KSH, à priori, je ne peux faire +1 sur le jour que dans la fonction date et la fonction date n'accepte pas de constante ('060831'). Dois-je utiliser un autre langage (comme PERL) pour arriver à mes fins ? Et comment puis-je faire ? Merci de votre aide, conseils, etc ... |
|
Salut,
voilà un petit code en Perl La méthode utilisé est de ajouter de secondes EPOCH - d'abord je converti en secondes EPOCH la date qui se trouve dans la variable - je fait les manipulations nécessaires - je permet la saisie d'un nombre de jours de decalage - je calcule la nouvelle date en secondes EPOCH - je converti en date A toi d'adapter. #!/usr/bin/perl
#
use warnings;use strict;
use Time::Local;
# la date ( aammjj ) contenu dans une variable scalaire
my $d='060824';
my ($a,$m,$j) = unpack("A2" x (length($d)/2), $d);
print "La date initiale : $a$m$j\n";
# conversion en secondes EPOCH
my $ed = timelocal(0,0,0,$j,$m - 1,$a);
# Ajout d'un nombre de jours
print "Entrez le decalage [nombre jours] : ";
chomp(my $decalage = <STDIN>);
my $intervalle = $decalage * 60 * 60 * 24;
# calculer la nouvelle date
my $resultat = $ed + $intervalle;
# conversion de secondes EPOCH en date format aammjj
my ($jj,$mm,$aa) = (localtime($resultat))[3,4,5];
$jj = sprintf("%02d",$jj);
$mm = sprintf("%02d",$mm + 1);
$aa = substr(($aa + 1900),-2);
my $d_res = "$d + $decalage : $aa$mm$jj";
print "$d_res\n";
__END__Une autre méthode pourra être l'utilisation du moduel Date::Calc du CPAN.
lami20j |
Résultats pour calcul de date (j+1) a partir d'une variable
Résultats pour calcul de date (j+1) a partir d'une variable
Résultats pour calcul de date (j+1) a partir d'une variable
Résultats pour calcul de date (j+1) a partir d'une variable
Résultats pour calcul de date (j+1) a partir d'une variable