so, hab es nun in eine while - schleife gesetzt.
Wenn ich jetzt über das ganze mal nachdenke, fällt mir jetzt noch was dazu ein:
mit folgender funktion lese ich ja die Tage eines Monats heraus:
So, nun habe ich einen ganz anderen DENK-ANSATZ.
Grund dafür ist, dass ich die Werktage eines Ausgewählten Zeitraumes benötige. Diesen Code habe ich mir jetzt zusammengestellt.
So, ich bekomme jetzt anhand diesen codes einen Wert von 255 heraus.
Es müsste aber 248 sein.
WARUM
Es gibt 260 Werktage. (abzüglich Wochenende)
Wir haben 18 Urlaubstage im Jahr (Österreich)
Davon sind genau 6 Urlaubstag im Jahr 2006, die in ein Wochenende fallen.
12 Urlaubstage sind fürs Jahr 2006 unter der Woche.
Somit müssten die 12 Urlaubstage von den 260 Werktagen abgezählt werden.
Ich komm nicht dahinter.
PHP-Code:
$startdatum=mktime(0,0,0,$Monat,$Tag,$Jahr);
$enddatum=mktime(0,0,0,$MonatEnde,$TagEnde,$JahrEnde);
while($startdatum<=$enddatum){
$startdatum++;
$test=date("d.m.Y", $startdatum);
echo "$test<br>";
}
mit folgender funktion lese ich ja die Tage eines Monats heraus:
PHP-Code:
function ArbeitstageErmitteln($Jahr, $Monat, $Tag, $JahrEnde, $MonatEnde, $TagEnde)
{
for($i=1; $i<=date("t", mktime(0, 0, 0, $Monat, $Tag, $Jahr)); $i++)
{
if(date("w", mktime(0, 0, 0, $Monat, $i, $Jahr))!=0 && date("w", mktime(0, 0, 0, $Monat, $i, $Jahr))!=6)
{
$Anzahl++;
}
}
return $Anzahl;
}
Grund dafür ist, dass ich die Werktage eines Ausgewählten Zeitraumes benötige. Diesen Code habe ich mir jetzt zusammengestellt.
PHP-Code:
$startdatum=mktime(0,0,0,$Monat,$Tag,$Jahr);
$enddatum=mktime(0,0,0,$MonatEnde,$TagEnde,$JahrEnde);
$start_wday = date('w',$startdatum);
$end_wday = date('w',$enddatum);
$weeks = date('W',$enddatum - $startdatum);
$days = date('z',$enddatum - $startdatum);
if($start_wday > $end_wday) {
$w_days = $days - ($weeks * 2);
}
else $w_days = $days - (($weeks - 1) * 2);
//----- FEIERTAGE -----
$faktor=0;
while(true)
{
if(($startdatum+(86400*$faktor))>$enddatum)
{
break;
}
else
{
foreach($feiertage as $feiertag)
{
$feiertag=explode(".",$feiertag);
$feiertag = mktime(0,0,0,$feiertag[1],$feiertag[0],$feiertag[2]);
if(($startdatum+(86400*$faktor))==$feiertag)
{
if(date("l" ,$feiertag)!="Sunday" && date("l" ,$feiertag)!="Saturday")
{
$w_days--;
}
}
}
$faktor++;
}
}
echo "$w_days<br>";
Es müsste aber 248 sein.
WARUM
Es gibt 260 Werktage. (abzüglich Wochenende)
Wir haben 18 Urlaubstage im Jahr (Österreich)
Davon sind genau 6 Urlaubstag im Jahr 2006, die in ein Wochenende fallen.
12 Urlaubstage sind fürs Jahr 2006 unter der Woche.
Somit müssten die 12 Urlaubstage von den 260 Werktagen abgezählt werden.
Ich komm nicht dahinter.
Kommentar