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 :

additioner des temps datetime


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Juin 2007
    Messages
    179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2007
    Messages : 179
    Par défaut additioner des temps datetime
    bonjour,
    je calcule des temps entre des dates (datetime)
    pour claculer la différence entre deux dates j'utilise :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    // on fait la différence
        $dated= new DateTime($row['date_heure_deb']);
    	$datef= new DateTime($row['date_heure_fin']);
    	$interval = $datef->diff($dated);
    	echo "<td colspan=\"2\" align=\"center\">". stripslashes($interval->format('%Y Ann&eacute;e %M mois %D jour - %H heures %I minutes %S secondes'))."&nbsp;</td>";
    cela fonctionne trés bien

    ma question : comment additionner 2 temps issue de deux differences ?
    j ai essayé avec add
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    // on additionne les temps passes
     
    	$total->add($interval->format(''%Y Ann&eacute;e %M mois %D jour - %H heures %I minutes %S secondes''));
    	echo "<td align=\"center\">". stripslashes($total->format('%Y Ann&eacute;e %M mois %D jour - %H heures %I minutes %S secondes'))."&nbsp;</td>";
    cela ne fonctionne pas j ai une erreur dateinterval construct

    la fonction add demande un formatage particulier (ci-dessous) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $now->add(new DateInterval("P0000-00-00T$interval:00"));
    faut il exploder la date puis inserer les valeurs ?

    merci de me donner une direction

  2. #2
    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
    Par défaut
    La méthode add ne demande pas de formatage, elle veut seulement un objet DateInterval :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $total->add($interval);
    Tu peux enlever tes stripslashes(), ils ne servent à rien.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre éclairé
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Juin 2007
    Messages
    179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2007
    Messages : 179
    Par défaut RE:
    merci pour ta réponse mon PB c'est le formatage de dateinterval j ai cette erreur

    ( ! ) Catchable fatal error: Object of class DateTime could not be converted to string in C:\wamp\www\intra\test_comptage.php on line 50
    j ai essaye tous les formats rien a faire ?
    voici le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    // on fait la différence
        $dated= new DateTime($row['date_heure_deb']);
    	$datef= new DateTime($row['date_heure_fin']);
    	$interval = $datef->diff($dated);
    	echo "<td colspan=\"2\" align=\"center\">". stripslashes($interval->format('%Y Ann&eacute;e %M mois %D jour - %H heures %I minutes %S secondes'))."&nbsp;</td>";
    $datef->add(new DateInterval('PT'.$dated.'S'));
    echo  $datef->format('%Y Ann&eacute;e %M mois %D jour - %H heures %I minutes %S secondes');

  4. #4
    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
    Par défaut
    Je t'ai deja repondu : il n'y a pas de format, la méthode add() demande un objet DateInterval
    et ton objet Interval c'est le résultat de diff() : $interval
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $total->add($interval);
    et tes stripslashes() ne servent toujours à rien.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre éclairé
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Juin 2007
    Messages
    179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2007
    Messages : 179
    Par défaut
    Je reviens vers vous pour une explication plus parlante

    j ai des dates
    datededebut1 et datedefin1 je vais la différence et j obtiens un resultat que je formate

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     $dated= new DateTime($row['date_heure_deb1']);
    	$datef= new DateTime($row['date_heure_fin2']);
    	$interval1 = $datef->diff($dated);
    echo "<td colspan=\"2\" align=\"center\">". stripslashes($interva1l->format('%Y Ann&eacute;e %M mois %D jour - %H heures %I minutes %S secondes'))."&nbsp;</td>";
    le résultat est correct
    maintenant j ai une 2° opération identique avec 2 autres dates
    datededebut2 et datedefin4 je vais la différence et j obtiens un resultat que je formate
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     $dated= new DateTime($row['date_heure_deb3']);
    	$datef= new DateTime($row['date_heure_fin4']);
    	$interval2 = $datef->diff($dated);
    echo "<td colspan=\"2\" align=\"center\">". stripslashes($interval2->format('%Y Ann&eacute;e %M mois %D jour - %H heures %I minutes %S secondes'))."&nbsp;</td>";
    j obtiens les bon résultats

    Ma question comment additionner
    $interval1 + $interval2

    J'espére avoir été plus clair merci

  6. #6
    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
    Par défaut
    Il n'y a rien pour le faire nativement.
    Tu peux ajouter tes intervalles à une date et refaire la différence :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $e = new DateTime('00:00');
    $f = clone $e;
    $e->add($interval1);
    $e->add($interval2);
    echo $f->diff($e)->format('%Y Ann&eacute;e %M mois %D jour - %H heures %I minutes %S secondes');
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  7. #7
    Membre éclairé
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Juin 2007
    Messages
    179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2007
    Messages : 179
    Par défaut RE
    merci pour ta réponse
    je vais creuser de ce coté et te tiens informé
    JM

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

Discussions similaires

  1. [TP] L'USB crée des temps morts. . .
    Par yvesrobert dans le forum Turbo Pascal
    Réponses: 9
    Dernier message: 14/06/2006, 17h43
  2. [Outil]Simulation de dégradation des temps de réponse
    Par Laurent Dardenne dans le forum Développement
    Réponses: 4
    Dernier message: 07/06/2006, 17h23
  3. [SGBD] PHP/mysql additioner des variables
    Par picsoun dans le forum SQL Procédural
    Réponses: 8
    Dernier message: 20/03/2006, 04h49
  4. Réponses: 4
    Dernier message: 03/03/2006, 17h03
  5. [Oracle 8i]Sommer des temps
    Par venusiafalls dans le forum Oracle
    Réponses: 15
    Dernier message: 19/07/2005, 11h09

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