Fonction quirenvoie la date du prochain jour

Nicolas Cartron -  
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.

7 réponses

  1. teebo Messages postés 33585 Date d'inscription   Statut Contributeur Dernière intervention   1 797
     
    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
  2. blux Messages postés 2064 Date d'inscription   Statut Modérateur Dernière intervention   3 455
     
    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
  3. cartron
     
    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
  4. Marden Messages postés 1075 Statut Membre 210
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. kalamit
     
    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
  7. Bobinours Messages postés 2903 Statut Membre 504
     
    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
  8. Bobinours Messages postés 2903 Statut Membre 504
     
    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