afronden tijdverschil op hele kwartieren naar boven

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Gerrit broekhuis

gerrit broekhuis

31/01/2012 16:53:58
Quote Anchor link
Hoi,

Ik moet het tijdverschil omzetten naar een decimale waarde in uren. De uren worden opgeslagen met 2 decimalen en moeten op een kwartier naar boven afgerond worden.

M.a.w. van
12:00 tot 13:14 wordt 1,25 uur
12:00 tot 13:15 wordt 1,25 uur
12:00 tot 13:16 wordt 1,50 uur
12:00 tot 13:30 wordt 1.50 uur

Ik heb al een stukje om verschillen uit te rekenen, maar zit nu met de afronding

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php
 $nextDay
=$begintijd>$eindtijd?1:0;
 $dep=EXPLODE(':',$begintijd);
 $arr=EXPLODE(':',$eindtijd);
 $diff=ABS(MKTIME($dep[0],$dep[1],0,DATE('n'),DATE('j'),DATE('y'))-MKTIME($arr[0],$arr[1],0,DATE('n'),DATE('j')+$nextDay,DATE('y')));
 $hours=FLOOR($diff/(60*60));
 $mins=FLOOR(($diff-($hours*60*60))/(60));
 IF(STRLEN($hours)<2){$hours="0".$hours;}
 IF(STRLEN($mins)<2){$mins="0".$mins;}
?>


Wie heeft er een goede tip?

Groeten, Gerrit
 
PHP hulp

PHP hulp

16/11/2024 21:36:32
 
- SanThe -

- SanThe -

31/01/2012 17:09:09
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php
$begin
= '12:00';
$eind = '13:14';
$exbegin = explode(':', $begin);
$exeind = explode(':', $eind);
$verschil = ($exeind[0] - $exbegin[0]) * 60 + ($exeind[1] - $exbegin[1]);
echo number_format((ceil($verschil / 15) / 4), 2);
?>
Gewijzigd op 31/01/2012 17:09:24 door - SanThe -
 
Gerrit broekhuis

gerrit broekhuis

31/01/2012 20:22:33
Quote Anchor link
Hoi SanThe,

Dit gaat bijna helemaal goed. Het enige probleem is dat de eindtijd over de datumgrens heen kan gaan. Bijvoorbeeld vana 23:00 tot 00:30 zou anderhalf uur moeten zijn, terwijl ik nu uitkom op -22.50. De voorbeeldcode die ik gaf doet daar wel wat mee, maar gaat heeft geen afronding.

Groeten, Gerrit
 
Gerben G

Gerben G

31/01/2012 20:30:25
Quote Anchor link
@Gerrit
Dit kun je oplossen door te controleren of de uitkomst kleiner dan 0 is en zo ja dit van 24 af te halen.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
if($output < 0)
{

  $output = 24 - abs($output);
}

?>
Gewijzigd op 31/01/2012 20:31:27 door Gerben G
 
Gerrit broekhuis

gerrit broekhuis

31/01/2012 20:40:10
Quote Anchor link
Hoi Gerben,

Nu is het helemaal super, in mijn praktijk is het nl. niet mogelijk dat iets langer dan 24 uur kan duren, dus zo gaat het helemaal goed.

Groeten, Gerrit
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.