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.
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.
Les convertir à un format plus classique, faire la soustraction et reconvertir vers ton format perso ?
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!
j'ai bien une idée en tant que débutant mais ça plante au 2eme test!
si j explose
et que je soustrais!
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);
ça va tant que $ml_1 est plus grand que $ml_2
Code : Sélectionner tout - Visualiser dans une fenêtre à part $ecart_qualif = $ml_1-$ml_2;
DateInterval ne supporte pas les microsecondes , il faut donc les calculer à la main.
Tu peux éventuellement faire un premier calcul à base de datetime :
Ce qui te permet d'avoir simplement la précision jusqu'à la seconde
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));
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;
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.
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.
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é :
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
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);
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager