bonsoir à tous,

je c'est que sur ce coup là je vais abuser et je m'en excuse d'avance.

je lis le contenu d'une table mysql qui me renvoie des chiffres à virgule que je stocke et additionne en temps réelle.

${'heure'.$idr}=${'heure'.$idr}+$row"flighttime"];

le soucis c'est que ces nombre à virgule ont une base de .60 vue que c'est du temps
0.01
0.02
0.03
...
0.59
1
1.01
1.02

donc si je laisse faire le prg je vais me trouver avec ce genre de truc:

0.45+1.35=1.80 si que est vrai, mais dans mon cas, c'est faux car en réalité =2.20

Comment puis je faire pour résoudre ce soucis de base de temps.

une solution clé en main serais très très très apprécier pour une fois.

merci mille fois d'avance.

flo

3 réponses


flo3376
Auteur
Réponse acceptée

Bonjour,
merci de ton aide, ça m'a permis d'avancer et de sortir ça qui marche

<?php
$heure_a_virgule1 = 1.55;

$heure_a_virgule2 = 1.09;

$heure_normale = floor($heure_a_virgule1);
$minute_apres_virgule = (($heure_a_virgule1 - $heure_normale )*100);
    // récupère le nombre d'heures avant la virgule 
$heure_normale2 = floor($heure_a_virgule2);
    // récupère les décimales 
$minute_apres_virgule2 = (($heure_a_virgule2 - $heure_normale )*100);
$minute_apres_virgule=$minute_apres_virgule+$minute_apres_virgule2;
if ($minute_apres_virgule>59)
    {$minute_apres_virgule=$minute_apres_virgule-60;
    $heure_normale=$heure_normale+$heure_normale2+1;
    }

$heure_a_virgule1=($heure_normale+($minute_apres_virgule/100));
echo 'cumul heure:'; 
echo $heure_a_virgule1;
?>

et voici une fois intégré dans mon code:

$heure_normale = floor(${'heure'.$idr});
                $minute_apres_virgule = ((${'heure'.$idr} - $heure_normale )*100);
                $heure_normale2 = floor($row"flighttime"]);
                $minute_apres_virgule2 = (($row"flighttime"] - $heure_normale2 )*100);
                $minute_apres_virgule=$minute_apres_virgule+$minute_apres_virgule2;
                if ($minute_apres_virgule>59)
                 {
                    $minute_apres_virgule=$minute_apres_virgule-60;
                    $heure_normale=$heure_normale+$heure_normale2+1;
                 }
                ${'heure'.$idr}=($heure_normale+($minute_apres_virgule/100));

Salut flo3376,
Je pense avoir réussi se que tu cherchais mais je pense également que l'on peut l’optimisé.

/* heure de test 1 (variable contenant l'heure souhaitée)*/
                $heure_a_virgule = 1.80;
                    /* heure de test 2 (variable contenant l'heure souhaitée)*/
                $heure_a_virgule = 1.15;
                    /* récupère le nombre d'heures avant la virgule */
                $heure_normale = floor($heure_a_virgule);
                    /* récupère les décimales avec le zéro : 0.12 */
                $minute_apres_virgule = $heure_a_virgule - floor($heure_a_virgule) ;
                if ($minute_apres_virgule > 0.60) {
                        /* ajoute une heure */
                    $heure_normale = $heure_normale + 1;
                        /* soustrait 60 minute */
                    $heure_normale = $heure_normale + ($minute_apres_virgule - 0.60);
                    /* Résultat test 1 : 2.2 */
                    echo $heure_normale;    
                }else{
                    /* Résultat test 2 : 1.15 */
                    echo $heure_a_virgule;
                }

J'espère c'est bien se que tu cherchais surtout :)

WebMaster Junior chez 123plantes

re,

De rien si sa ta aidé :)
bonne continuation

WebMaster Junior chez 123plantes