Fonction quirenvoie la date du prochain jour
Nicolas Cartron
-
Bobinours Messages postés 2903 Statut Membre -
Bobinours Messages postés 2903 Statut Membre -
Bonjour,
j'ai beau chercher je ne trouve pas ce que je veux :
Je souhaite trouver un moyen pour récupérer la date de demain :
exemple : si nous sommes le 30/09/2002, cette fonction me renverra
01/10/2002, ...
Merci.
j'ai beau chercher je ne trouve pas ce que je veux :
Je souhaite trouver un moyen pour récupérer la date de demain :
exemple : si nous sommes le 30/09/2002, cette fonction me renverra
01/10/2002, ...
Merci.
7 réponses
-
Salut, tu es en quel langage, sinon on peut rien dire nous, les fonctions dependent forcement du langage, mais le principe general est d ajouter 1...
ö,ö
\_/ -
Salut,
dans quel langage ?
VB, C, C++, C#, J#, Java, PHP, DELPHI... ? :-)
A+ Blux "Les cons, ça ose tout.
C'est même à ça qu'on les reconnait" -
oups, désolé, c'est du Perl.
Le principe du +1 ne me va pas, puisque je risque de me retrouver avec
des 30 fevrier ou autres betises...
au pire j'ai trouvé une autre soluce mais bon... -
Tu ne peux pas couper aux tests des années bissextiles du nombre de jours dans le mois. A titre d'aide, quelques instructions en JS :
var jours = new Array() ;
jours[0] = new Array(31,28,31,30,31,30,31,31,30,31,30,31) ;
jours[1] = new Array(31,29,31,30,31,30,31,31,30,31,30,31) ;
/* ------------------------------------------------------ */
function bissex(an) {
ret = (an%400 == 0 ) | (( an%4 == 0 ) & ( an%100 != 0 )) ;
return (ret?1:0)
}
// décomposer la date du jour en (annee,mois,jour)
bis = bissex(annee) ;
/* ------------------------------------------------------ */
jour++
if ( jour > jours[bis][mois-1] ) {
jour = 1 ;
mois++
if ( mois > 12 ) {
mois = 1 ;
annee++ ;
}
}
// recomposer la date -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
En Perl, y'a pas une fonction qui convertit en nombre de jour depuis une date donné, comme cela se voit en PHP, VB ou autre?
Kalamit,
Je ponce donc j'essuie -
Arf :oD J'ai écrit le code pour la date d'hier, mais pas pour le lendemain :oD
sub getHier
{
my $date = shift;
my ($jour, $mois, $annee) = ($date =~ /(\d{2})-(\d{2})-(\d{4})/);
my ($hierJour, $hierMois, $hierAnnee) = ($jour, $mois, $annee);
if ($jour-1 <= 0) {
# Decrementation du JOUR
if (($mois == 1) || ($mois == 2) || ($mois == 4) || ($mois == 6) || ($mois == 8) || ($mois == 9) || ($mois == 11) ) {$hierJour = 31;}
elsif (($mois) == 3)
{
if ( (( $annee % 4 == 0 ) && ( $annee % 100 != 0 )) || ( $annee % 400 == 0 )) {
$hierJour = 29;
}
else {
$hierJour = 28;
}
}
else {$hierJour = 30;}
# Decrementation du MOIS et ANNEE
if ($mois <= 1) {
$hierMois = 11;
$hierAnnee = $annee-1;
}
else {$hierMois = $mois-1;}
}
else {$hierJour = $jour-1;}
return sprintf("%02d-%02d-%04d", $hierJour, $hierMois, $hierAnnee);
}
print getHier('01-03-2002'), "\n";
-= Bobinours =-
Une Contrée? http://bobin.underlands.org/cgi-bin/belette.pl -
Bein voila... Merci beaucoup à Marden pour son algo :o)
J'avais également oublié de gérer les années bissextiles dans ma fonction getHier(), grace à toi, c'est réparé.
sub getDemain
{
# Recuperation et décomposition de la date du jour en (jour, mois, annee)
my $date = shift;
my ($jour, $mois, $annee) = ( $date =~ m[(\d{2})/(\d{2})/(\d{4})] );
my @jours;
$jours[0] = [31,28,31,30,31,30,31,31,30,31,30,31];
$jours[1] = [31,29,31,30,31,30,31,31,30,31,30,31];
# ------------------------------------------------------ #
sub bissex
{
my $annee = shift;
my $ret = (( $annee%4 == 0 ) && ( $annee%100 != 0 )) || ( $annee%400 == 0 );
return ($ret ? 1 : 0);
}
my $bis = bissex($annee) ;
# ------------------------------------------------------ #
$jour++;
if ( $jour > $jours[$bis][$mois-1] ) {
$jour = 1;
$mois++;
if ( $mois > 12 ) {
$mois = 1;
$annee++;
}
}
return sprintf("%02d/%02d/%04d", $jour, $mois, $annee);
}
print getDemain('31/12/2000'), "\n";