PHP gewerkte tijd berekenen

Status
Niet open voor verdere reacties.

Mattiedude

Gebruiker
Lid geworden
27 dec 2011
Berichten
9
Hallo,

Ik heb een script wat de totaal gewerkte uren moet berekenen wat gewerkt is:

<?php
date_default_timezone_set('Europe/Amsterdam');

$beginTijd = strtotime('2012-07-03 09:00:00');
$pauzeTijd = strtotime('0000-00-00 00:15:00');
$eindTijd = strtotime('2012-07-03 17:00:00');

$werkTijd1 = ($eindTijd - $beginTijd);
$werkTijd = $werkTijd1 - $pauzeTijd;

echo '<BR/>Gewerkte tijd: '. date('H:i:s', $werkTijd);

?>
Maar als uitkomst staat er Gewerkte tijd: 09:04:32. Dit moet 8:45:00 zijn.
Heeft iemand een idee hoe dit kan?
 
Volgens mij moet het zoiets zijn
PHP:
<?php
 date_default_timezone_set('Europe/Amsterdam'); 

$beginTijd = strtotime('2012-07-03 09:00:00'); 
$eindTijd = strtotime('2012-07-03 17:00:00'); 

$werkTijd1 = ($eindTijd - $beginTijd);

$aantalUren = date('H:i:s', $werkTijd1); 
echo $aantalUren."<br>";
//je hebt recht op een kwartier pauze na 2 uur.
$pauzeNaAantalUur='02:00:00';

//aantal pauze toegevoegd, je zou kunnen laten uitreken op basis van het aantal gewerkte uren hoeveel pauze hij/ zij moet krijgen
/**
 * ceil = altijd omhoog afronden
 * round = bij de helft omhoog afronden tenzij je PHP_ROUND_HALF_DOWN op het eind toevoegd
 * floor = altijd naar benenden afronden
*/

$aantalPauze = floor($aantalUren / $pauzeNaAantalUur);
echo $aantalPauze;
$pauzeTijd = $aantalPauze*60*15; 
$werkTijd = $werkTijd1 - $pauzeTijd; 

echo '<BR/>Gewerkte tijd: '. date('H:i:s', $werkTijd); 

?>
 
Laatst bewerkt:
Als je de tijden laat echo'en zie je wat het probleem is:
1341298800
-62169984272
1341327600
28800
62170013072
Zoals je ziet heeft $pauzeTijd een negatieve waarde. Dat klopt ook, omdat de datum voor 1 januari 1970 is (en de timestamp die strtotime oplevert is het aantal seconden sinds middernacht 1 januari 1970).
Het beste kan je de regel
PHP:
$pauzeTijd = strtotime('0000-00-00 00:15:00');
veranderen in
PHP:
$pauzeTijd = 15*60;
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan