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 :

Calculer temps restant entre deux date


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    173
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 173
    Points : 48
    Points
    48
    Par défaut Calculer temps restant entre deux date
    Bonjour,

    J'aimerais savoir comment faire pour afficher le temps restant pour un site d'enchere, j'ai deux date dans ma base date_debut et date_fin.

    Voila ce que j'ai :

    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
     
     
     
    $debut=$dep['date_debut'];
    $fin=$dep['date_fin'];
     
    echo $fin;
    echo '<br><br>';
     
     
    $date="$fin"; //la date de fin
    $dure=365; //jours
     
          list($Y,$d,$m)=explode("-",$date);
          $DateFin = mktime(0, 0, 0, $y, $d, $m); //la date de fin en mktime
     
          $duree=$dure*86400; //je transforme en seconde pour le mktime
          $dateDebut = $DateFin-$duree; //la date du debut est donc la date de fin moins la duree non?
     
          $dateFinTexte = date("Y-d-m", $DateFin); //la fin sous forme jj/mm/aaaa
          $dateDebutTexte = date("Y-d-m", $dateDebut); //le debut sous forme jj/mm/aaaa
     
          //calcul du nbr de jours restant
          $DateNow=mktime(); //maintenant
          $temprestant=$DateFin-$DateNow; //la date de fin moins maintenant (on est en seconde ici)
     
          $temprestant=floor($temprestant/(60*60*24)); //le temps restant jours
     
          echo 'La fin : '.$dateFinTexte.'<br>Le debut : '.$dateDebutTexte.'<br>temps restant: '.$temprestant;

  2. #2
    Rédacteur
    Avatar de RideKick
    Homme Profil pro
    Directeur technique
    Inscrit en
    Septembre 2006
    Messages
    5 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Septembre 2006
    Messages : 5 914
    Points : 12 572
    Points
    12 572
    Par défaut
    Salut ,
    Pourquoi ne pas utiliser la fonction date() avec le timestamp $temprestant comme tu le fais avant ?

  3. #3
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Tu as mélangé $y et $Y.

    Tu es sur d'avoir Y-d-m comme format de date et non Y-m-d ?


    Sinon sur le fond ton code est inutilement compliqué

    - Tu pars d'une date Y-d-m que tu decoupes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    list($Y,$d,$m)=explode("-",$date);
    - Tu en fais un timestamp :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $DateFin = mktime(0, 0, 0, $y, $d, $m);
    - Tu en refais une date Y-d-m :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $dateFinTexte = date("Y-d-m", $DateFin);

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    173
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 173
    Points : 48
    Points
    48
    Par défaut
    Ca me donne ca comme reponse

    La date de fin dans la base est 2010-03-14

    Pkoi 2013

    La fin : 2013-03-12
    Le debut : 2012-03-12
    temps restant: 1389.3890972222

  5. #5
    Membre expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Points : 3 972
    Points
    3 972
    Par défaut
    Bonjour,

    La fonction http://fr.php.net/date_diff me parait plus qu'appropriée.

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    173
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 173
    Points : 48
    Points
    48
    Par défaut
    dans ma base c'est afficher comme ca :

    2010-02-12 12:20:33 date_debut
    2010-03-14 12:20:33 date_fin

  7. #7
    Membre expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Points : 3 972
    Points
    3 972
    Par défaut
    Oui ? Ton dernier message ne ressemble pas tellement à une question. Soit :

    http://fr.php.net/manual/fr/datetime.diff.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    $start = new DateTime('2010-02-12 12:20:33'); 
    $end = new DateTime('2010-03-14 12:20:33');
     
    $time_span = $start->diff($end);
     
    var_dump($time_span);

  8. #8
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    A moins que tu aies des années sur 14 mois c'est donc bien Y-m-d.

    D'ailleurs la différence de date ce fait aussi directement chez Mysql (et surement ailleurs)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT DATEDIFF(date_fin, date_debut)

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    173
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 173
    Points : 48
    Points
    48
    Par défaut
    ce ne fais rien du tout en faite j'aimerais quand function des deux date cela m'affiche il reste 12 jour 10 h et 22 minute

  10. #10
    Membre émérite Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Points : 2 566
    Points
    2 566
    Par défaut
    Ou sinon une fonction bricolée :

    Code php : 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
     
    function mef_date($entier){
     
    	$reste = 0;
    	$mef = '';
     
    	if($entier > 86400){
    		$j = (int)($entier/86400);
    		$entier = $entier % 86400;
    		$mef .= $j.'j ';
    	}
     
    	if($entier > 3600){
    		$h = (int)($entier/3600);
    		$entier = $entier % 3600;
    		$mef .= $h.'h ';
    	}
     
    	if($entier > 60){
    		$m = (int)($entier/60);
    		$entier = $entier % 60;
    		$mef .= $m.'m ';
    	}
     
    	if($entier != 0)
    		$mef .= $entier.'s';
     
    	return $mef;
     
    }

    où $entier vaut $dateFin - time()

    EDIT : $dateFin = time('2010-02-12 12:20:33') par exemple

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    173
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 173
    Points : 48
    Points
    48
    Par défaut
    j'ai fais ca ca me donne 33m 30s

    mais il ne sais pas quand la date de depart

  12. #12
    Membre émérite Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Points : 2 566
    Points
    2 566
    Par défaut
    J'ai pas saisi, tu connais date_debut non ?

  13. #13
    Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    173
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 173
    Points : 48
    Points
    48
    Par défaut
    ben dans la function il recupere pas la date donc il ne sais pas de quand il dois compter

  14. #14
    Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    173
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 173
    Points : 48
    Points
    48
    Par défaut
    j'ai fais ca comme ce ca :

    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
     
    $entier=$dep['date_fin'];
    $debut=$dep['date_debut'];
     
    function mef_date($entier){
     
    	$reste = 0;
    	$mef = '';
     
    	if($entier > 86400){
    		$j = (int)($entier/86400);
    		$entier = $entier % 86400;
    		$mef .= $j.'j ';
    	}
     
    	if($entier > 3600){
    		$h = (int)($entier/3600);
    		$entier = $entier % 3600;
    		$mef .= $h.'h ';
    	}
     
    	if($entier > 60){
    		$m = (int)($entier/60);
    		$entier = $entier % 60;
    		$mef .= $m.'m ';
    	}
     
    	if($entier != 0)
    		$mef .= $entier.'s';
     
    	return $mef;
     
    }

  15. #15
    Membre émérite Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Points : 2 566
    Points
    2 566
    Par défaut
    Citation Envoyé par jarod6827 Voir le message
    ben dans la function il recupere pas la date donc il ne sais pas de quand il dois compter
    Pas besoin de debut ni de fin, juste d'un intervalle de temps

    ex : mef_date(time()) -> 14652j 14h 27m 17s depuis 1970

    Donc il te suffit de faire un delta entre ta date de fin et time() pour avoir le compte a rebour de la fin de ton annonce

  16. #16
    Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    173
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 173
    Points : 48
    Points
    48
    Par défaut
    Ok et comment j'affiche cela car dans les function date je suis pas pro

  17. #17
    Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    173
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 173
    Points : 48
    Points
    48
    Par défaut
    J'ai mis dans ma requete pour afficher le resultat j'obtient 14652j 14h 36m 1s mais cela augmente et cela ne devrais pas car si l'enchere dure mettons 30 jour il devrais s'eccouler

  18. #18
    Membre émérite Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Points : 2 566
    Points
    2 566
    Par défaut
    Ba tu l'affiches pas puisqu'elle te retourne une chaine déjà formatée

    tu l'utilises comme ca par exemple :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    Fin de l'enchère dans : <?php echo mef_date(time($date_fin)-time()); ?>

  19. #19
    Membre émérite Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Points : 2 566
    Points
    2 566
    Par défaut
    Citation Envoyé par jarod6827 Voir le message
    J'ai mis dans ma requete pour afficher le resultat j'obtient 14652j 14h 36m 1s mais cela augmente et cela ne devrais pas car si l'enchere dure mettons 30 jour il devrais s'eccouler

    Normal que ca augmente car ca représente le temps depuis le 1er janvier 1970

    A toi de mettre le bon argument dans la fonction comme je t'ai montré

  20. #20
    Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    173
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 173
    Points : 48
    Points
    48
    Par défaut
    cela m'affiche rien du pas de resultat

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Calculer le temps écoulé entre deux dates
    Par ramoucha23 dans le forum Collection et Stream
    Réponses: 8
    Dernier message: 25/08/2016, 17h48
  2. Calcul temps ecoulé entre deux dates
    Par biazoc dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 17/05/2008, 15h21
  3. [TIMER] Temps restant entre deux événements
    Par Rayek dans le forum Delphi
    Réponses: 8
    Dernier message: 17/11/2006, 15h37
  4. calculer la temps moyen entre deux dates
    Par zainabsourid dans le forum BIRT
    Réponses: 1
    Dernier message: 24/07/2006, 12h06
  5. [VBA] Calculer la différence entre deux dates
    Par T'chab dans le forum Access
    Réponses: 13
    Dernier message: 11/05/2006, 15h12

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