Calcul de date (j+1) a partir d'une variable
Jip06
Messages postés
7
Statut
Membre
-
Super Sheep -
Super Sheep -
Bonjour,
Je voudrais ajouter un jour dans une date chargée dans une variable (sous le format ymd).
un peu comme ceci -> wdate= `date "+%d %m %y" | awk '{print $3""$2""$1+1}'` mais en utilisant non pas la fonction date comme sur ce modèle mais une variable $1 = 060823.
Je voudrais obtenir wdate=060824
Pouvez vous m'aider !
merci
Je voudrais ajouter un jour dans une date chargée dans une variable (sous le format ymd).
un peu comme ceci -> wdate= `date "+%d %m %y" | awk '{print $3""$2""$1+1}'` mais en utilisant non pas la fonction date comme sur ce modèle mais une variable $1 = 060823.
Je voudrais obtenir wdate=060824
Pouvez vous m'aider !
merci
A voir également:
- Calcul de date (j+1) a partir d'une variable
- Creer un groupe whatsapp a partir d'un autre groupe - Guide
- Comment faire une recherche à partir d'une photo - Guide
- Calcul km marche à pied gratuit - Télécharger - Sport
- Calcul moyenne excel - Guide
- Créer une vidéo à partir de photos - Guide
7 réponses
ATTENTION !
Pour avoir utilisé le code de lami20j, dans un script, un bug très subtile s'est glissé :
En effet, comme le décalage horaire n'est pas géré, ce script n'incrémentera jamais le jour du passage à l'heure d'hiver, car 26/10/2008 00:00:00 + 24 heures = 26/10/2008 23:00:00 !
Solution simple puisque les heures ne sont pas gérées ici : Ajouter 25h au lieu de 24h à l'intervalle de temps.
Voilà, si ça peut servir à l'internaute qui passera par là ;)
Pour avoir utilisé le code de lami20j, dans un script, un bug très subtile s'est glissé :
En effet, comme le décalage horaire n'est pas géré, ce script n'incrémentera jamais le jour du passage à l'heure d'hiver, car 26/10/2008 00:00:00 + 24 heures = 26/10/2008 23:00:00 !
Solution simple puisque les heures ne sont pas gérées ici : Ajouter 25h au lieu de 24h à l'intervalle de temps.
Voilà, si ça peut servir à l'internaute qui passera par là ;)
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.
lami20j
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
Salut,
Je suis pas sûr d'avoir tout bien saisi là !!!
Si c'est ça que tu veux (enfin, quelque chose d'approchant) :
;-))
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...
;-))
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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
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 ...
[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 ...