Samstagsdatum aus Kalenderwoche

vquicksilver

Mitglied
Hallo ich bin auf der suche nach einer Möglichkeit ein Datum aus einer vorher angegebenen Kalenderwoche zu Berechnen. Das sieht ca so aus. Ich gebe z.b. der Funktion an "tag(50,2005)" .. dann soll er aus dem vorher festgelegten Jahr 2005 mir das Datum des Samstags (hier der 17.12.05) zurückgeben. Ich habe eine Funktion gefunden die sowas ähnliches macht.. Nur halt nicht bei Samstag sondern beim Montag. Ich habe probiert die Funktion anzupassen aber leider war das nicht von erfolg gekrönt. Die Funktionen:

PHP:
function firstkw($jahr) { 
   $erster = mktime(0,0,0,1,1,$jah);
  $wtag = date('w',$erster);

   if ($wtag= 4) {
       /**
        * Donnerstag oder kleiner: auf den Montag zurückrechnen.
        */
       $montag = mktime(0,0,0,1,1-($wtag-1),$jahr);
   } else {
       /**
        * auf den Montag nach vorne rechnen.
        */
       $montag = mktime(0,0>,0,1,1+(7-$wtag+1),$jahr);
   }
   return $montag;
}

function mondaykw($kw,$jahr) {
   $firstmonday = firstkw($jahr); 
   $mon_monat = date('m',$firstmonday);
   $mon_jahr = date('Y',$firstmonday);
   $mon_tage = date('d',$firstmonday);

   $tage =($kw-1)*7;

   $mondaykw = mktime(0,0,0,$mon_monat,$mon_tage+$tage,$mon_jahr);
   return $mondaykw;
}

Vielen Dank für eure Hilfe
 
Hast Du schon mal probiert, $tage einfach plus 5 zu rechnen?
Etwa so:

Code:
$tage =($kw-1)*7 + 5;

statt
Code:
$tage =($kw-1)*7;

Gruß
vop
 
PHP:
function tagesdatum($wochentag,$wochennummer,$jahr)
{ 
  return date('j.n.Y',
              strtotime(
                       "this " . $wochentag ." + " .$wochennummer."  weeks",
                         mktime(0,0,0,1,1,$jahr)
                        )
                       );
}
echo tagesdatum('Saturday',50,2005);

<edit>
Naja..ist noch nen kleiner Fehler drinnen, aber den kriegt man auch noch weg :-)
</edit>
 
War doch kein Fehler drinnen :-)
Hat mich nur verwirrt, dass der Samstag der 1.Woche 2005 der 8.1. ist.... das stimmt aber.

Der erste Samstag 2005 war zwar der 1.1.2005 ...der gehört lt. ISO 8601:1988 jedoch zur letzten Woche 2004 und nicht zur ersten Woche 2005 :suspekt:
 
Zurück