J'ai des durées en% RH: format i: s (comme +00: 00: 00 ou -00: 00: 00) et je veux les ajouter ou les soustraire (avec le négatif) et non dans les 24 heurescalculer les heures négatives et positives
Ex:
1/(09:30:15 + (- 10:00:00)) = -01: 30: 15.
2/22:00:00 + 03:00:00 = 25:00:00 (pas 01:00:00 + 1 jour)
Toute idée? Merci d'avance !
EDIT:
finalement fait. Je ne sais pas si c'est la bonne façon de le faire, mais ça marche plutôt bien. Trouvé à l'aide d'une autre fonction trouvée sur un forum.
function calc_hours($hour1,$hour2){
$si1 = $hour1[0]; $si2 = $hour2[0];
$hour1 = substr($hour1,1,8);
$hour2 = substr($hour2,1,8);
$secondes1=intval($si1.heure_to_secondes($hour1));
$secondes2=intval($si2.heure_to_secondes($hour2));
$somme=intval($secondes1+$secondes2);
//transfo en h:i:s
$s= ($somme % 60);
$m1= (($somme-$s)/60);
$m= ($m1 % 60);
$h= (($m1-$m)/60);
if($somme > 0) { $sif = '+'; }
$resultat=sprintf("%02d", $h).":".sprintf("%02d", abs($m)).":".sprintf("%02d", abs($s))."";
return $sif.$resultat;
}
function heure_to_secondes($heure){
$array_heure=explode(":",$heure);
$secondes=3600*$array_heure[0]+60*$array_heure[1]+$array_heure[2];
return $secondes;
}
appeler comme: calc_hours ('+ 27:45:16', '- 02:35:12');
Oui, n'utilisez pas 'date()' ou la classe 'datetime'. – Daan
Plus d'infos? Que dois-je utiliser si je ne peux pas utiliser la classe date() ou datetime? – hellodracon
Vous devez créer une formule vous-même. Un datetime va toujours calculer avec 24 heures. – Daan