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 :

Soustraire deux unités de temps au format perso


Sujet :

Langage PHP

  1. #1
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Décembre 2013
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2013
    Messages : 6
    Points : 3
    Points
    3
    Par défaut Soustraire deux unités de temps au format perso
    Comment soustraire 2 temps de cette forme:
    1:25,332 - 1:25,105
    ces donnés sont stockées dans un champ perso sous wordpress.
    merci d avance pour les infos.
    Zika
    EDIT: les données sont stockées dans 2 champs persos, je les récupère séparément donc.

  2. #2
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Les convertir à un format plus classique, faire la soustraction et reconvertir vers ton format perso ?

  3. #3
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Décembre 2013
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2013
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    Bonjour,
    c'est bien ce que je voudrais faire mais je ne sais pas comment m organiser pour le rendre standart, toutes les fonctions parlent de "dates" (jour mois année et heure min sec) et je suis en m:s,mil
    on m a conseillé des fonctions natives mais celles ci sont bien en date.
    zut!

  4. #4
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Décembre 2013
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2013
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    j'ai bien une idée en tant que débutant mais ça plante au 2eme test!
    si j explose
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    	list($mn_sc_1a, $ml_1) = explode(',', $temps_de_qualif);
    	list($mn_sc_2a, $ml_2) = explode(',', $temps_pole_position);
    et que je soustrais!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    	$ecart_qualif = $ml_1-$ml_2;
    ça va tant que $ml_1 est plus grand que $ml_2

  5. #5
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372

  6. #6
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 692
    Points : 20 241
    Points
    20 241
    Par défaut
    DateInterval ne supporte pas les microsecondes , il faut donc les calculer à la main.

    Tu peux éventuellement faire un premier calcul à base de datetime :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $dt = DateTime::createFromFormat('i:s,u','01:25,332');
    $dt2 = DateTime::createFromFormat('i:s,u','01:25,105');
     
    var_dump($dt->diff($dt2));
    Ce qui te permet d'avoir simplement la précision jusqu'à la seconde

    ne reste alors qu'ajouter un calcul sur les microseconde ensuite avec quelque chose comme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $usec = abs($dt->format('u') - $dt2->fomat('u')) / 1000;

  7. #7
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Citation Envoyé par grunk Voir le message
    DateInterval ne supporte pas les microsecondes , il faut donc les calculer à la main.
    Bon à savoir, ça.

  8. #8
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Décembre 2013
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2013
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    bonjour,
    la solution est en chemin.

  9. #9
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 692
    Points : 20 241
    Points
    20 241
    Par défaut
    C'est bien gentil de poster des problèmes sur plusieurs forum mais en attendant il y'a des gens qui passe du temps à t'aider pour rien ...

    Après si effectivement tu recherchais une fonction toute prête ce n'est pas ici qu'il fallait venir demander de l'aide.

    Et au passage la solution tu l'avais avec mon poste préc"dent et c'est moins "bidouille" que des explodes.

  10. #10
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Décembre 2013
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2013
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    pardon de ne pas avoir compris ta solution, si pour toi ça veut dire la même chose que la solution posée ce n est pas le cas pour moi ne la comprenant pas.

    de plus, ce n est pas un code tout prêt, j ai participé à l écriture, si tu lis le post entièrement.

    je te laisse compter le nombre de message/sujet qui sont résolu alors qu une solution n est pas posté, c'est d ailleurs ce qui m a amené à m inscrire à l autre forum aussi.

    pour finir j ai préféré posté le lien au code pour le détail de la discussion et la création du code. ça pourra aider quelqu un, qui comme moi, ne saura pas forcément expliquer sa démarche.

  11. #11
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 692
    Points : 20 241
    Points
    20 241
    Par défaut
    Si tu ne comprend pas la solution que je propose , pose des questions , on est pas censé deviné que tu n'as pas compris.

    En mode détaillé :

    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
    /**
    * @param string $t1 Premier temps
    * @param string $t1 Second temps
    * @param boolean $formated Temps formaté (true) ou milliseconde (false)
    */
    function ecart($t1,$t2,$formated)
    {
    	//Création de 2 date time à partir du format
    	$dt = DateTime::createFromFormat('i:s,u',$t1);
    	$dt2 = DateTime::createFromFormat('i:s,u',$t2);
     
    	//Calcul de la différence entr eles deux datetime
    	$diff = $dt->diff($dt2);
     
    	//Calcul de la différence des millisecond , diff() ne le gérant pas
    	$usec = abs($dt->format('u') - $dt2->format('u')) / 1000;
     
    	//Retour formaté ou en int
    	if($formated)
    		return $diff->i.':'.$diff->s.','.$usec;
    	else
    		return ($diff->i * 60 * 1000) + ($diff->s * 1000 ) + $usec;
    }
     
    echo ecart($t1,$t2,false);
    La seul contrainte est que les minutes doivent commencer par un 0 si elle sont inférieur à 10. Donc si tes temps sont forcément inférieur à 10 min tu peux simplement concaténer à 0 à $t1 et $t2

Discussions similaires

  1. Réponses: 9
    Dernier message: 08/11/2005, 09h55
  2. [SQL] Comment soustraire deux dates
    Par raj dans le forum Oracle
    Réponses: 2
    Dernier message: 12/10/2005, 12h40
  3. Réponses: 1
    Dernier message: 28/06/2005, 09h15
  4. soustraire deux dates ?
    Par joejoe dans le forum SQL
    Réponses: 2
    Dernier message: 19/07/2002, 15h53

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