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 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
| <?php
include_once('ventile_jeu-test.php');
//$horaires =array(array('commence' => 'YYYY-MM-DD hh:mm:ss' , 'termine' => 'YYYY-MM-DD hh:mm:ss'), .../...);
$affich = ventile_horaires($horaires);
// à faire : affichage et mise en forme du résultat obtenu dans $affich
//////////////////////////////////////////////////////////////
function ventile_horaires($tabl_horair) // pour chaque amplitude horaire
{ foreach($tabl_horair as $num => $amplitu)
{ $resulta[] = ventile_heures($amplitu);
}
return $resulta;
}
//////////////////////////////////////////////////////////////
function ventile_heures($heur) // répartition des heures de nuit et de jour
{ $commenc = strtotime($heur['commence']);
$termine = strtotime($heur['termine']);
$vacatio = array(0, 0 , $termine - $commenc); // cumul des heures : 0=> nuit, 1=> jour, 2=> journée
$reperes = dateparse($heur['commence'],'06:00:00','21:00:00'); // il y a 4 repères, 2 par jour, 06h00 et 21h00
$i = 0; // de 0 à 3, pour chaque repère
while($vacatio[0] + $vacatio[1] < $vacatio[2])
{ $j = $i % 2; // 0=> nuit, 1=> jour
if($commenc < $reperes[$i])
{ if($termine < $reperes[$i])
{ $vacatio[$j] += $termine - $commenc;
}
else
{ $vacatio[$j] += $reperes[$i] - $commenc;
$commenc = $reperes[$i];
}
}
else
{
}
$i++;
}
return $vacatio;
}
/////////////////////////////////////////////////
function dateparse($valeur,$h_m,$h_s) // ('YYYY-MM-DD hh:mm:ss','06:00:00','21:00:00')
{ $val_t = trim($valeur);
list($dat_t,$tim_t) = explode(' ',$val_t);
$six_t = $dat_t.' '.$h_m;
$min_s = strtotime($six_t);
$neu_t = $dat_t.' '.$h_s;
$neu_s = strtotime($neu_t);
$par_d = explode('-',$dat_t);
$par_h = explode(':',$h_m);
$six_s = mktime($par_h[0],$par_h[1],$par_h[2],$par_d[1],$par_d[2] +1,$par_d[0]);
$par_h = explode(':',$h_s);
$max_s = mktime($par_h[0],$par_h[1],$par_h[2],$par_d[1],$par_d[2] +1,$par_d[0]);
$form = 'd / m / Y - H : i';
return array($min_s,$neu_s,$six_s,$max_s); // 06h00 ,21h00 , 06h00 lendemain , 21h00 lendemain
}
//////////////////////////////////////////////////////////////
/**/
?> |
Partager