расчет отрицательных и положительных часов

У меня есть длительности в формате% RH: i: s (например, +00: 00: 00 или -00: 00: 00), и я хочу добавить или вычесть их (с отрицательным значением), а не через 24 часа

Пример:

1 / (09:30:15 + (- 10:00:00)) = -01: 30: 15.

2 / 22:00:00 + 03:00:00 = 25:00:00 (не 01:00:00 + 1 день)

Любая идея ? Заранее спасибо !

РЕДАКТИРОВАТЬ:

Наконец-то сделал это. Не знаю, если это действительно правильный способ сделать это, но он работает довольно хорошо. Нашел его с помощью другой функции, найденной на форуме.

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;
}

Назовите это как: calc_hours (‘+ 27:45:16’, ‘- 02:35:12’);

0

Решение

Наконец-то сделал это. Не знаю, если это действительно правильный способ сделать это, но он работает довольно хорошо. Нашел его с помощью другой функции, найденной на форуме.

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;
}

Назовите это как: calc_hours (‘+ 27:45:16’, ‘- 02:35:12’);

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector