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 :

Soustraction de dates


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Inscrit en
    Août 2011
    Messages
    73
    Détails du profil
    Informations forums :
    Inscription : Août 2011
    Messages : 73
    Points : 37
    Points
    37
    Par défaut Soustraction de dates
    bonjour,
    j'aimerais soustraire deux dates qui ont cette forme :
    2011-08-22 10:36:23
    2011-08-09 00:00:00

    et avoir le résultat en heure. j'ai beau cherché une fonction qui effectue ça directement mais sans résultat.

  2. #2
    Membre à l'essai
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2011
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2011
    Messages : 12
    Points : 21
    Points
    21
    Par défaut
    Bonjour,

    Tout dépend de la version de PHP que tu utilises.

    Si tu utilises les dernières versions de PHP (5) regardes :
    http://www.php.net/manual/fr/datetime.sub.php

    Sinon il faut regarder du coté de mktime et strftime
    http://fr.php.net/manual/fr/function.mktime.php
    http://fr.php.net/manual/fr/function.strftime.php

  3. #3
    Nouveau membre du Club
    Inscrit en
    Août 2011
    Messages
    73
    Détails du profil
    Informations forums :
    Inscription : Août 2011
    Messages : 73
    Points : 37
    Points
    37
    Par défaut
    Citation Envoyé par neobast Voir le message
    Bonjour,

    Tout dépend de la version de PHP que tu utilises.

    Si tu utilises les dernières versions de PHP (5) regardes :
    http://www.php.net/manual/fr/datetime.sub.php

    Sinon il faut regarder du coté de mktime et strftime
    http://fr.php.net/manual/fr/function.mktime.php
    http://fr.php.net/manual/fr/function.strftime.php
    oui j'utilise php 5.3.5

  4. #4
    Nouveau membre du Club
    Inscrit en
    Août 2011
    Messages
    73
    Détails du profil
    Informations forums :
    Inscription : Août 2011
    Messages : 73
    Points : 37
    Points
    37
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $idcreate= $row->date_de_création;
       $idaction= $row->date_de_dernière_action;
    $sous = $idaction ->diff( $idcreate );
    ça me retourne ceci
    Call to a member function diff() on a non-object in C:\wamp\www\2\duree_acc.php on line 26

    (line 26 est celle de $sous = $idaction ->diff( $idcreate ))

  5. #5
    Expert éminent sénior

    Avatar de FirePrawn
    Homme Profil pro
    Consultant technique
    Inscrit en
    Mars 2011
    Messages
    3 179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Consultant technique

    Informations forums :
    Inscription : Mars 2011
    Messages : 3 179
    Points : 19 373
    Points
    19 373
    Par défaut
    Utilise
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Datetime::createFromFormat
    pour pouvoir utiliser la fonction diff par la suite.

  6. #6
    Nouveau membre du Club
    Inscrit en
    Août 2011
    Messages
    73
    Détails du profil
    Informations forums :
    Inscription : Août 2011
    Messages : 73
    Points : 37
    Points
    37
    Par défaut
    Citation Envoyé par FirePrawn Voir le message
    Utilise
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Datetime::createFromFormat
    pour pouvoir utiliser la fonction diff par la suite.
    oui je sais mais quand j'ai l'ai utilisé avec datetime , ça a généré "erreur fatale".

  7. #7
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 727
    Points
    10 727
    Par défaut
    Citation Envoyé par sirina88 Voir le message
    oui je sais mais quand j'ai l'ai utilisé avec datetime , ça a généré "erreur fatale".
    montre ton code et l'erreur complete

  8. #8
    Nouveau membre du Club
    Inscrit en
    Août 2011
    Messages
    73
    Détails du profil
    Informations forums :
    Inscription : Août 2011
    Messages : 73
    Points : 37
    Points
    37
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    while($row=mysql_fetch_object($query))
    {
       $idcreate= $row->date_de_création;
       $idaction= $row->date_de_dernière_action;
        $total++;
     
    $sous = $idaction ->diff( $idcreate );
     
    	$add=$add - $sous ;
     
     
    }
    avec $idcreate et $idaction avec cette forme
    2011-08-22 10:36:23

  9. #9
    Expert éminent sénior

    Avatar de FirePrawn
    Homme Profil pro
    Consultant technique
    Inscrit en
    Mars 2011
    Messages
    3 179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Consultant technique

    Informations forums :
    Inscription : Mars 2011
    Messages : 3 179
    Points : 19 373
    Points
    19 373
    Par défaut
    Il n'y a aucun Datetime la...

  10. #10
    Nouveau membre du Club
    Inscrit en
    Août 2011
    Messages
    73
    Détails du profil
    Informations forums :
    Inscription : Août 2011
    Messages : 73
    Points : 37
    Points
    37
    Par défaut
    Citation Envoyé par FirePrawn Voir le message
    Il n'y a aucun Datetime la...
    oui en fait j'ai enlevé le datetime en espérant que ça va marcher; mais en vain;
    le code avec date time est

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    while($row=mysql_fetch_object($query))
    {
       $idcreate= new DATETime($row->date_de_création);
       $idaction=new DATETime ($row->date_de_dernière_action);
        $total++;
     
    $sous = $idaction ->diff( $idcreate );
     
    	$add=$add - $sous ;
     
     
    }

    erreur :
    Notice: Object of class DateInterval could not be converted to int in C:\wamp\www\2\duree_acc.php on line 28
    Call Stack


    Catchable fatal error: Object of class DateInterval could not be converted to string in C:\wamp\www\2\duree_acc.php on line 33


    Merci d'avance

  11. #11
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 727
    Points
    10 727
    Par défaut
    regarde bien la doc, ça renvoie un DateInterval
    au passage pourquoi mettre ça en majuscule ? pourquoi mettre des accents dans tes noms de champs ?

  12. #12
    Nouveau membre du Club
    Inscrit en
    Août 2011
    Messages
    73
    Détails du profil
    Informations forums :
    Inscription : Août 2011
    Messages : 73
    Points : 37
    Points
    37
    Par défaut
    j'ai trouvé la solution , on peut le faire avec mysql avec la commande timediff

  13. #13
    Nouveau membre du Club
    Inscrit en
    Août 2011
    Messages
    73
    Détails du profil
    Informations forums :
    Inscription : Août 2011
    Messages : 73
    Points : 37
    Points
    37
    Par défaut
    mais je c pa comment récupérer le résultat de timediff pour l'utiliser dans mes calculs :/

  14. #14
    Membre émérite
    Avatar de Kaamo
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    1 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 165
    Points : 2 778
    Points
    2 778
    Par défaut
    C'est-à-dire ? Récupérer la valeur calculée par la requête ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $sql = mysql_query("SELECT TIMEDIFF('".$date_fin."','".$date_debut."')");
    $tempsTotal = mysql_fetch_array($sql_temps);
    echo "Resultat : ".$tempsTotal[0];
    ou sinon nommer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $sql = mysql_query("SELECT TIMEDIFF('".$date_fin."','".$date_debut."') as ecart");
    $tempsTotal = mysql_fetch_array($sql_temps);
    echo "Resultat : ".$tempsTotal['ecart'];
    Fais bien attention à ce que les dates "$date_fin" et "$date_debut" aient bien le même format (time ou datetime pour les deux).

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

Discussions similaires

  1. soustraction de date
    Par lazzeroni dans le forum Oracle
    Réponses: 4
    Dernier message: 04/07/2006, 12h27
  2. [Dates] Soustraction...de date
    Par BenoitDenis dans le forum Langage
    Réponses: 7
    Dernier message: 24/04/2006, 13h48
  3. [Dates] Soustraction de date en php
    Par o_live dans le forum Langage
    Réponses: 1
    Dernier message: 28/11/2005, 15h25
  4. arrondir un nombre découlant d'une soustraction de date
    Par bertrand_declerck dans le forum Langage
    Réponses: 2
    Dernier message: 17/08/2005, 13h51
  5. Problème de soustraction de date
    Par remika dans le forum Langage SQL
    Réponses: 4
    Dernier message: 29/07/2005, 14h51

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