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
    Membre confirmé
    Inscrit en
    Août 2011
    Messages
    73
    Détails du profil
    Informations forums :
    Inscription : Août 2011
    Messages : 73
    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 régulier
    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
    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
    Membre confirmé
    Inscrit en
    Août 2011
    Messages
    73
    Détails du profil
    Informations forums :
    Inscription : Août 2011
    Messages : 73
    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
    Membre confirmé
    Inscrit en
    Août 2011
    Messages
    73
    Détails du profil
    Informations forums :
    Inscription : Août 2011
    Messages : 73
    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 confirmé

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

    Informations professionnelles :
    Activité : Consultant technique

    Informations forums :
    Inscription : Mars 2011
    Messages : 3 179
    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.
    Avant toute chose : lire le mode d'emploi du forum et ses règles.
    Je ne réponds pas aux questions techniques en MP.

  6. #6
    Membre confirmé
    Inscrit en
    Août 2011
    Messages
    73
    Détails du profil
    Informations forums :
    Inscription : Août 2011
    Messages : 73
    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 confirmé

    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
    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
    Membre confirmé
    Inscrit en
    Août 2011
    Messages
    73
    Détails du profil
    Informations forums :
    Inscription : Août 2011
    Messages : 73
    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 confirmé

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

    Informations professionnelles :
    Activité : Consultant technique

    Informations forums :
    Inscription : Mars 2011
    Messages : 3 179
    Par défaut
    Il n'y a aucun Datetime la...
    Avant toute chose : lire le mode d'emploi du forum et ses règles.
    Je ne réponds pas aux questions techniques en MP.

  10. #10
    Membre confirmé
    Inscrit en
    Août 2011
    Messages
    73
    Détails du profil
    Informations forums :
    Inscription : Août 2011
    Messages : 73
    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 confirmé

    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
    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
    Membre confirmé
    Inscrit en
    Août 2011
    Messages
    73
    Détails du profil
    Informations forums :
    Inscription : Août 2011
    Messages : 73
    Par défaut
    j'ai trouvé la solution , on peut le faire avec mysql avec la commande timediff

  13. #13
    Membre confirmé
    Inscrit en
    Août 2011
    Messages
    73
    Détails du profil
    Informations forums :
    Inscription : Août 2011
    Messages : 73
    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 Expert
    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 : 38
    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
    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