Calcul intervalle temps

Calcul intervalle temps

par simon charles,
Nombre de réponses : 6

Bonjour,


Je suis actuellement en train de réaliser un plugin pour une plateforme Moodle et j'ai une petite question concernant les dates. En effet je récupère deux dates (la date actuelle et une date de rendu de devoir), et je souhaiterais calculer l'intervalle de temps qu'il y a entre ces deux dates. Ces dates sont sous forme de timestamp, je peux donc les soustraire pour avoir l'intervalle en seconde mais pour ensuite le reformuler sous forme 'Jour Heure', j'utilise un calcul que je ne trouve pas très propre.

Donc ma question est la suivante, existe-t-il une fonction Moodle qui permettrait de calculer un intervalle entre deux timestamp ?


Merci à ceux qui pourront m'aider.

Moyenne des évaluations  -
En réponse à simon charles

Re: Calcul intervalle temps

par Joseph Rézeau,
Avatar Développeurs Avatar Développeurs de plugins Avatar Moodleurs particulièrement utiles Avatar Testeurs Avatar Traducteurs

"j'utilise un calcul que je ne trouve pas très propre."

c'est-à-dire ?

En réponse à Joseph Rézeau

Re: Calcul intervalle temps

par simon charles,
J'utilise un calcul à base de divisions entières et de reste pour trouver le nombre de jours - heures - minutes que fait mon nombre de secondes. Mais j'aurais aimé une fonction Moodle plus précise et surtout plus propre. Cependant cela n'existe peut être pas.
En réponse à simon charles

Re: Calcul intervalle temps

par stephane ngov,

bonjour,

j'ai fais des calcules , le nombre total de minutes de visites d'un membre selon un cours

voici la petite boucle.


$sql = "SELECT time, userid FROM `mdl_log`
WHERE `url` = 'view.php?id=4137' AND time >1380578400 AND time <1414770639 AND userid IN (3655, 5730, 5731, 5732, 5733, 5734, 5735, 5736, 5737, 5738, 5739, 5730, 5775, 5776, 5777, 5778, 5779, 5780, 5781, 5782, 5783, 5784, 5785, 5786, 5787, 5788, 5789, 5790, 5791, 5792, 5793, 5794 )ORDER BY userid";
echo $sql;

$qb = $bdd->query($sql);

date_default_timezone_set('Europe/Paris');
$totaux = 0;
$time_tete=0;
$last_user ="";
$tb_time = array();//table des temps de chaque membre
$file_time=array();
$total_vue = 0;
$i = 0;
$nb_membre = 0;
$t_prec = 0;
while($data1 = $qb->fetch())
{
    if($last_user != $data1['userid']) //nouveau membre calcul
    {
        if($i !=0) //calcule des total de temps
        {
            //echo "calcul total"."<br/>";
                    $minutes = ($total_vue/60);
            echo "<h1>". ($total_vue/60)." MINUTES pour  ".$mail."</h1>";
            echo "<hr>";
            $totaux = $minutes + $totaux;
            $nb_membre ++;
        }
        $i=0;
        //echo "<h1>  $i </h1>";
        $tb_time[$i] = $file_time;
        $file_time=array();
    }else
    {
        if($t_prec != 0)
        {
        //    echo "<b>$t_prec</b><br/>";
            //echo " =>".$data1['time']."<br/>";
            $ecart = abs($data1['time'] - $t_prec);
            if($ecart <= 72000) //si infÃ(c)rieur à 2 heures on ajoute le temps
            {
                //echo "<h2>".($ecart/60)."minutes</h2>";
                $total_vue = $total_vue +$ecart;
            }
        }       

           echo date("d-m-Y H:m:s", $data1['time'])." ====";
    //    echo $data1['time']." => ".rcp_email($data1['userid'])."<br/>";
        $t_prec = $data1['time'];
        $mail = rcp_email($data1['userid']);
        $i++;
     }

    //echo "***".$i."***";
    $last_user =  $data1['userid'];
}

il faut utiliser ceci pour le transformer en j-m-a h:m:s


echo date("d-m-Y H:m:s", $data1['time'])." ====";

En réponse à simon charles

Re: Calcul intervalle temps

par Nicolas Martignoni,
Avatar Développeurs Avatar Développeurs de plugins Avatar Documentation writers Avatar Moodleurs particulièrement utiles Avatar Testeurs Avatar Traducteurs

Est-ce que format_time() peut faire l'affaire (dans /lib/moodlelib.php, ligne 2068) ?

Moyenne des évaluations Utile (1)