IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

[Dates] Affichage et décompte de temps


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    36
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 36
    Points : 21
    Points
    21
    Par défaut [Dates] Affichage et décompte de temps
    Bonjour,



    voila j'ai besoin de pouvoir affficher ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <?PHP
    echo "Aujourd'hui il reste ".$jour." jour(s) et ".$heure." Heure(s), avant le 1er ".$moisSuivant." ".$annee.".";
    ?>

    je connais la fonction date() pour avoir la date du jour serveur.

    mais je ne sais pas comment faire pour soustraire cette date du 1er du mois suivant et afficher le temps restant.

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2005
    Messages
    514
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 514
    Points : 631
    Points
    631
    Par défaut
    Bonsoir,
    servez-vous de mon modèle pour coder votre fonction.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    <?php  
     
      function EEDD($fDate)
      {
        list($aaaa, $mm, $jj) = explode('-', $fDate);
     
        $fUnix = mktime(0, 0, 0, $mm, $jj, $aaaa);
        $pUnix = time();  
     
        $texte = 'Dans';
     
        if ($fUnix > $pUnix) $tUnix = $fUnix-$pUnix;
        else
        {
          $tUnix = $pUnix-$fUnix;
          $texte = 'Il y a';
        }
     
        $date = explode('-', date('Y-n-j-G-i-s', $tUnix-(60*60)));
     
        if ($date[4][0] == '0') $date[4] = $date[4][1];
        if ($date[5][0] == '0') $date[5] = $date[5][1];    
     
        $soustractions = array(1970, 1, 1, 0, 0, 0);
        $unites = array('an', 'mois', 'jour', 'heure', 'minute', 'seconde');  
     
        for ($i = 0; $i < count($date); $i++)
        {
          $date[$i] -= $soustractions[$i];
     
          if ($date[$i] > 0)
          {
            $texte .= ' '.$date[$i].' '.$unites[$i];
            if ($date[$i] > 1 && $unites[$i] <> 'mois') $texte .= 's';
          }
        }  
     
        return $texte;	
      }
     
      echo EEDD('2008-02-04');	
     
    ?>
    Avec ce code, vous affichez un texte du genre : Dans 7 ans 11 mois 20 jours 18 heures 36 minutes 7 secondes ou alors si la date est dépassée : Il y a 1 heure, Etc.

    Normalement ma fonctions n'est pas buggée, mais ce n'est pas forcément la bonne méthode. Je ne sais pas pourquoi, ce soir j'ai pété les plombs et j'ai préféré me baser sur la date EPOCH (unix) plutôt que de faire des calculs.

    Cordialement,
    DaRiaN.

  3. #3
    Membre expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Points : 3 545
    Points
    3 545
    Par défaut
    La fonction getdate() pourra sûrement t'intéresser.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $today = getdate();
    $currentMonth = $today['mon'];
    $currentTimestamp = $today['0']
    //etc...
    //le reste, c'est à toi de le faire

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    36
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 36
    Points : 21
    Points
    21
    Par défaut
    Merci DaRiaN et jml94.


    DaRiaN ta fonction est super. je vais l'étudier car elle va me permettre de faire ce que je veux exactement et surtout de comprendre mktime() avec le quel j'ai un probleme .

    jml94 merci je dois dire je n'ai pas encore eu le temps regardé cette fonction getdate(), juste un peu ici (Dans mon livre de chevet) pour voir de quoi elle retourne.

    http://www.fil.univ-lille1.fr/techno...n.getdate.html


    merci a vous deux, super sympa.
    (Tien je vais me faire un petit jaune a votre santé ).

    DaRiaN je ne vais pas utiliser ta fonction tel-quel (trop facile ) je vais la décortiquer, l'étudier, et certainement l'adapter a ma sauce reblochon .

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    36
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 36
    Points : 21
    Points
    21
    Par défaut
    juste un chose.

    mon gros souci et certainement celui de beaucoup de personnes
    c'est de comprendre la signification des arguments et des explications

    ex:
    dans mktime ( int hour , int minute , int second , int month , int day , int year , int is_dst )

    que veux dire int ou is_dts.


    ou dans:
    readfile ( string filename , bool use_include_path , resource context )

    et bien d'autres encore ( enfin presques toutes ) pour nous novices où soudeurs ou encore boulangers et qui nous interressons a l'informatique
    certain terme technique nous sont complétement extra-terrestre et on doit les deviner seul en regardant des scrypts pour comprendre, car dans les docs, sur livre ou en ligne, il n' y a aucune véritable explication sur ces argument, elles sont écritent pour des personnes qui on appris l'informatique et doivent savoir obligatoirement ces choses.


    c'est pourquoi des forums avec des personnes qui partagent leurs savoir et nous aide a comprendre et vraiment très important.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2005
    Messages
    514
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 514
    Points : 631
    Points
    631
    Par défaut
    Si vous lisez la documentation de PHP, c'est indiqué et en français.

    Citation Envoyé par http://fr2.php.net/mktime

    Ce paramètre peut être mis à 1 si l'heure d'hiver est appliquée (DST), 0 si elle ne l'est pas, et -1 (par défaut) si on ne sait pas. Si l'on ne sait pas, PHP tente de le traiter lui-même. Ceci peut occasionner des résultats inattendus (mais néanmoins correct). Quelques temps sont invalides si DST est activé sur les systèmes où PHP fonctionne ou is_dist est défini à 1. Si DST est activé e.g. 2:00, tous les temps entre 2:00 et 3:00 sont invalides et la fonction mktime() retourne une valeur indéfinie (généralement une valeur négative). Quelques systèmes (e.g. Solaris 8) activent DST à minuit, donc, le temps 0:30 du jour lorsque DST est activé est évalué à 23:30 du jour précédent.
    En ce qui concerne int c'est le diminutif de integer.

  7. #7
    Membre expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Points : 3 545
    Points
    3 545
    Par défaut
    Oui, c'est vrai que c'est pas forcément intuitif, bien que très répandu dans la littérature informatique.
    En gros, quand tu connaitras ceux-là, ça devrait déjà suffire dans pas mal de cas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    int = integer = nombre entier
    float = nomber réel
    string = chaine
    bool = booléen = vrai ou faux, 0 ou 1
    ts = timestamp = pour les dates, le timestamp UNIX. Je sais que tu aimes chercher, alors je te laisses te renseigner sur cette notion.
    Et pour le is_dst, c'est un nom de variable au pif, qui est censé etre parlant. Tu as très bien choisi ton exemple, parce qu'en l'occurence, il est pas très causant...

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    36
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 36
    Points : 21
    Points
    21
    Par défaut
    Merci a tous.


    avec tous ça je vais avancer.

    merci pour votre aide.

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    424
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 424
    Points : 382
    Points
    382
    Par défaut
    Et pour le is_dst, c'est un nom de variable au pif, qui est censé etre parlant. Tu as très bien choisi ton exemple, parce qu'en l'occurence, il est pas très causant...
    Dans la doc j'ai trouvé :
    Ce paramètre peut être mis à 1 si l'heure d'hiver est appliquée (DST), 0 si elle ne l'est pas, et -1 (par défaut) si on ne sait pas.
    DST est donc l'heure d'hiver, ca doit être les initiales du terme en anglais.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Dates] Affichage de l'heure
    Par HwRZxLc4 dans le forum Langage
    Réponses: 17
    Dernier message: 22/05/2006, 15h48
  2. Afficher un décompte de temps restant
    Par carmen256 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 23/04/2006, 23h27
  3. [Dates] affichage différent selon le mois en cours
    Par itri2005 dans le forum Langage
    Réponses: 3
    Dernier message: 07/04/2006, 17h05
  4. Réponses: 7
    Dernier message: 05/04/2006, 11h22
  5. [Dates] affichage date
    Par stomerfull dans le forum Langage
    Réponses: 2
    Dernier message: 01/02/2006, 12h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo