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] Date, chrono


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Février 2006
    Messages
    188
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 188
    Points : 110
    Points
    110
    Par défaut [Dates] Date, chrono
    bonjour


    voila mon probleme

    j'ai des donnes en db , un champs de type varchars , je voudrai calculer la difference entre les deux dates , entre celle en db et l'autre (actuel par time() ) . Je desire voir X seconde , ou X minute , heure...

    j'ai ceci :

    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
    function intervalCalc($difference)
    {
       if ($difference > 86400)
       {
           $interval = ($difference /86400);
           $interval.= " jours - ";
       }
       elseif ($difference> 3600)
       {
           $interval = ($difference /3600);
           $interval.= " heures - ";
       }
       elseif ($difference > 60)
       {
           $interval = ($difference/60);
           $interval.= " minutes - ";
       }
       else
      {
           $interval = $difference . " secondes"  ;
       }
       return  $interval;
    }

    le probleme c'est que je ne veux que des entiers! , donc pas des trucs du genre , 1.4877667heure

    merci pour votre aide

  2. #2
    Membre expérimenté
    Avatar de Anduriel
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Février 2004
    Messages
    2 290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Février 2004
    Messages : 2 290
    Points : 1 500
    Points
    1 500
    Par défaut
    Ca se règle vite avec ceil(), floor(), ou number_format().
    Par contre, quand tu as le 30 avril - 1 mai tu fais comment?
    Moi j'utiliserai timestamp()

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Février 2006
    Messages
    188
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 188
    Points : 110
    Points
    110
    Par défaut
    merci je vais direct chercher des infos sur ces fonctions merci!

    pour ce qui est du timestamp c'est non , a diverse reprise j'ai essayer , mais j'ai besoin de ces donnees pour autres choses sur le site et je ne desire pas changer le champs et la facon de mettre les donnees maintenant s'il faudra vraiment alors je retravaillerais le script

  4. #4
    Membre confirmé Avatar de papyphp
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    438
    Détails du profil
    Informations personnelles :
    Âge : 73
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 438
    Points : 587
    Points
    587
    Par défaut
    Salut,

    OK pour floor ...
    Il reste cependant un problème.
    Telle quelle, la fonction retournera un nombre de jours si $différence est supérieur à 86.400 et les heures minutes secondes ne seront pas calculées.
    Dans chaque if, il faut calculer le nombre de secondes restantes et faire le if suivant sur ce nombre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Si diff > 86400
     {
        jours = floor(dif / 86400);
        dif = dif % 86400;
      }
    Si  diff >  3600
    {
        heures = floor(dif / 3600);
        dif = dif % 3600;
      }
    et ainsi de suite
    Lu kinze d' awousse, la Vierje arandje û dusbrôle lu timp.

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Février 2006
    Messages
    188
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 188
    Points : 110
    Points
    110
    Par défaut
    comme ceci :
    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
    function intervalCalc($difference)
    {
       if ($difference > 86400)
       {
           $interval = (($interval_secs - ($difference%86400))/86400);
           $interval.= " jours - ";
       }
       elseif ($difference> 3600)
       {
           $interval = ($difference - ($difference%3600)/3600);
           $interval.= " heures - ";
       }
       elseif ($difference > 60)
       {
           $interval = ($difference - ($difference%60)/60);
           $interval.= " minutes - ";
       }
       else
      {
           $interval = $difference . " secondes"  ;
       }
       return  $interval;
    }
    le probleme

    Notice: Undefined variable: interval_secs in c:\weblocal\testrut\v.1\view.php on line 158



    et aussi :

    j'obtiens ceci :

    68826.881388889 heures -


    pourquoi?

  6. #6
    Membre confirmé Avatar de papyphp
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    438
    Détails du profil
    Informations personnelles :
    Âge : 73
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 438
    Points : 587
    Points
    587
    Par défaut
    Ca signifie tout simplement que la variable $interval_secs n'est pas définie.
    Si tu veux l'utiliser, il faut lui donner une valeur.
    Je persiste et signe, ta fonction ne retournera que des jours ou des heures ou des minutes ou des secondes jamais des jours - heures - minutes - secondes

    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
    function intervalCalc($difference)
    {
       $interval = '';
       if ($difference > 86400)
       {
           $interval = (($difference - ($difference%86400))/86400);
           $interval.= " jours - ";
           $difference = $difference % 86400;
       }
       if ($difference> 3600)
       {
           $interval .= ($difference - ($difference%3600)/3600);
           $interval.= " heures - ";
           $difference = $difference % 3600; 
       }
       if ($difference > 60)
       {
           $interval .= ($difference - ($difference%60)/60);
           $interval.= " minutes - ";
           $difference = $difference % 60;
       }
       $interval .= $difference . " secondes"  ;
       return  $interval;
    }
    Lu kinze d' awousse, la Vierje arandje û dusbrôle lu timp.

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Février 2006
    Messages
    188
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 188
    Points : 110
    Points
    110
    Par défaut
    avec ce script j'ai ceci


    13262 jours - 56957.178333333 heures - 2957.7 minutes - 18 secondes
    le script exact est ceci :

    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
    function intervalCalc($difference)
    {
       $interval = '';
       if ($difference > 86400)
       {
           $interval = (($difference - ($difference%86400))/86400);
           $interval.= " jours - ";
           $difference = $difference % 86400;
       }
       if ($difference> 3600)
       {
           $interval .= ($difference - ($difference%3600)/3600);
           $interval.= " heures - ";
           $difference = $difference % 3600;
       }
       if ($difference > 60)
       {
           $interval .= ($difference - ($difference%60)/60);
           $interval.= " minutes - ";
           $difference = $difference % 60;
       }
       $interval .= $difference . " secondes"  ;
       return  $interval;
    }
     
    echo intervalCalc($difference);
     
         ...

  8. #8
    Membre confirmé Avatar de papyphp
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    438
    Détails du profil
    Informations personnelles :
    Âge : 73
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 438
    Points : 587
    Points
    587
    Par défaut
    oops, j'ai recopié ton script sans le vérifier.
    Il manque des parenthèses dans le deuxième et le troisième if

    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
     function intervalCalc($difference)
    {
       $interval = '';
       if ($difference > 86400)
       {
           $interval = (($difference - ($difference%86400))/86400);
           $interval.= " jours - ";
           $difference = $difference % 86400;
       }
       if ($difference> 3600)
       {
           $interval .= (($difference - ($difference%3600))/3600);
           $interval.= " heures - ";
           $difference = $difference % 3600;
       }
       if ($difference > 60)
       {
           $interval .= (($difference - ($difference%60))/60);
           $interval.= " minutes - ";
           $difference = $difference % 60;
       }
       $interval .= $difference . " secondes"  ;
       return  $interval;
    }
     
    echo intervalCalc($difference);
    Je l'ai testé, ça donne une réponse correcte
    Lu kinze d' awousse, la Vierje arandje û dusbrôle lu timp.

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Février 2006
    Messages
    188
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 188
    Points : 110
    Points
    110
    Par défaut
    Merci beaucoup ,cela fonctionne comme je le souhaite

    bonne semaine a toi et merci encore

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 07/09/2005, 16h20
  2. [Date]Date sous Java != celle sous Access
    Par Cyborg289 dans le forum JDBC
    Réponses: 4
    Dernier message: 27/07/2005, 23h11
  3. [Date] Date courante au format SQL
    Par Mister Nono dans le forum JDBC
    Réponses: 3
    Dernier message: 17/03/2005, 16h57
  4. where date() > date+24heures
    Par wjc dans le forum Administration
    Réponses: 8
    Dernier message: 19/02/2005, 22h18
  5. [Dates] Date francais
    Par Anduriel dans le forum Langage
    Réponses: 6
    Dernier message: 23/11/2004, 22h23

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