Fonction quirenvoie la date du prochain jour

Fermé
Nicolas Cartron - 25 sept. 2002 à 08:40
Bobinours Messages postés 2898 Date d'inscription jeudi 26 avril 2001 Statut Membre Dernière intervention 21 mars 2013 - 26 sept. 2002 à 03:35
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.

7 réponses

teebo Messages postés 33478 Date d'inscription jeudi 14 octobre 2004 Statut Modérateur Dernière intervention 24 février 2011 1 795
25 sept. 2002 à 09:12
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...

ö,ö
\_/
0
blux Messages postés 24878 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 25 mars 2023 3 311
25 sept. 2002 à 09:13
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"
0
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...
0
Marden Messages postés 1072 Date d'inscription dimanche 11 février 2001 Statut Membre Dernière intervention 29 janvier 2006 209
25 sept. 2002 à 15:17
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Utilisateur anonyme
25 sept. 2002 à 16:00
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
0
Bobinours Messages postés 2898 Date d'inscription jeudi 26 avril 2001 Statut Membre Dernière intervention 21 mars 2013 503
26 sept. 2002 à 02:40
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
0
Bobinours Messages postés 2898 Date d'inscription jeudi 26 avril 2001 Statut Membre Dernière intervention 21 mars 2013 503
26 sept. 2002 à 03:35
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";
0