Hallo,

Ik probeer een functie te schrijven die automatisch overuren berekent alleen kom ik er niet uit ik heb bepaald dat na 18:00 en voor 04:00 wordt berekend onder overuren kan iemand mij de juiste richting in helpen

Eerst kijken hoelaat het is en dan kijken of de uren na 18:00 of/en Voor 4:00 zijn. zo moeilijk lijkt me dit toch niet?
date('Hi',$start) > 1800 && date('Hi',$end) > 0400

dat werkt niet he!

maak daarvan:
(int) date('Gi',$start) > 1800 && (int) date('Gi',$end) > 400

als ik jou was zou ik met 2 date objecten gaan werken... je bent nu met strings en date functies aan het kloten, het wordt echt een zooitje
Moet die laatste > niet < zijn?
Hoe worden de uren dat iemand gewerkt heeft eigenlijk opgeslagen?
Ze worden nog niet opgeslagen dat zou stap 2 zijn maar eerst probeer ik dit werkend te krijgen
Misschien moet je eerst eens kijken hoe je het op gaat slaan.
Als je ze namelijk als DATETIME() op gaat slaan kom je al een heel eind verder en hoef je je script bij lange na niet zo groot te maken. Scheelt tijd, serverruimte, en vooral dataverkeer.

date('Hi',$end) > 1800 && date('Hi',$end) < 0400)

Ik weet wat je hier wilt doen, maar het gaat niet werken ;-)
Er zal namelijk nooit een tijdstip zijn dat EN groter is dan 1800 EN kleiner dan 0400.

Je moet de test dus opsplitsen in twee tests:

( (date('Hi',$end) > 1800 && date('Hi',$end) < 2400) ||
(date('Hi',$end) > 0000 && date('Hi',$end) < 0400) )

Is het trouwens niet handiger om de gewerkte periode op te delen in losse uren en per uur te kijken of dat in het overwerktarief valt? Volgens mij maak je daar je logica een stuk eenvoudiger mee.

Reageren