|
Tip 222 - Een tijdsduur afronden naar het volgende kwartier

Deze week een vraag
van Marco K. Hij wil een berekende tijdsduur (eindtijd min
begintijd) decimaal verwerken, maar dan wel afgerond naar
het volgende kwartier.
Dus iemand die 13
minuten "verbruikt" krijgt er 15 aangerekend (dus decimaal
een kwart van een uur: 0,25). Op die manier kan gemakkelijk
het uurtarief omgezet worden naar het te betalen
bedrag.
FileMaker biedt
hiervoor verschillende mogelijkheden. We kiezen voor de
meest eenvoudige qua logica. We berekenen eerst de duurtijd
door eindtijd en starttijd van elkaar af te trekken. Die
duurtijd rekenen we om naar minuten en pas dan doen we een
afronding naar het eerstvolgende veelvoud van 15. Dit getal
zetten we dan terug om in uren en minuten.
We hebben dus maar
drie velden nodig:
Tijd
Start (time
field)
Tijd
Einde (time
field)
Afgeronde
decimale duurtijd
(calc field)
Wanneer we alles in
één enkele formule gieten, dan krijgen we voor
dit laatste veld:
(If(
Mod((Hour(Tijd Einde - Tijd Start) * 60 + Minute(Tijd
Einde - Tijd Start)); 15)>0;
Int((Hour(Tijd Einde - Tijd Start) * 60 + Minute(Tijd
Einde - Tijd Start))/15+1);
Int((Hour(Tijd Einde - Tijd Start) * 60 + Minute(Tijd
Einde - Tijd Start))/15)
)
*15) /60
Zuiver wiskundig
gezien kunnen we de formule nog vereenvoudigen, maar dan
wordt ze minder transparant. Nu kan Marco aan de
slag!
|