Wochentage errechnen

Moin Moin,

ich habe eine kurze frage! ich bin auf der suche nach einer Möglcihkeit die Wochentage zu berechnen.

Folgende Problemstellung:

Ich muss einen Datumsbereich angeben: bsp. 01.01.2010 bis 31.07.2010

Ich bin auf der suche nach einen Script das mir folgendes berechnet:

Anzahl an Wochentagen: Montag 15 x, Dientag 16 x, Mittwoch 10x u.s.w

Bin für jeden hinweiß dankbar !

Alex :D
 
Wie kann es in diesem Zeitraum den Montag 15x und den Mittwoch nur 10x geben?
Wenn sieben Tage um sind, dann hast du eine Woche, also addierst du zu jedem Wochentag einen dazu.
Du musst nur den Starttag rausfinden und mit dem Endtag abgleichen.
 
Man könnte es auch ein Script erledigen lassen.

PHP:
<?php
$s = "01.01.2010";
$e = "31.07.2010";

$sd = strtotime($s);
$ed = strtotime($e);

$weekdays = array();

for($i = $sd ; $i < $ed; $i+=86400)
{
	$weekday = date("D", $i);
	if(!isset($weekdays[ $weekday ]))
	  $weekdays[ $weekday ] = 1;
	else
	  $weekdays[ $weekday ] ++;
}

echo "<pre>";
print_r($weekdays);
echo "</pre>";
?>

Zugegeben, ist etwas "unperformant" funktioniert aber ;-)
 
Moin Moin Saftmeister,

Genau das ist es was ich suche :) Vielen Dank !

Jetzt wäre es noch die Absolute krönung wenn Du mir erzählen könntest wie ich die ergebnisse in eine Variable bekomme ?

Ich nehme mal an das Array in Variablen schreiben, oder ?

Aber so weit schon einmal sehr vielen Dank !

Alex
 
Sorry, aber ich versteh nicht wie du das meinst.

Die Einzelnen Tage in einer Variable oder pro Tag eine Variable oder wie?
Mach mal ein Beispiel wie das Resultat aussehen soll. Dann finden wir heraus wie du dahin kommst.
 
das geht nicht, da der Index keine Zahl sondern die englische Kurzform des Wochentages ist.

Aber hier sind 2 weitere Lösungen (wobei ich die erste hübsch finde

PHP:
<?php
$date = $start = strtotime('01.01.2010');
$end = strtotime('31.03.2010');

//Wochentage zählen
while($date < $end){
    $weekdays[date('l', $date)]++;   
    $date = $date + 86400;
}

//Key auf kleinschreibung wandeln und als Variablennamen brauchen
extract(array_change_key_case($weekdays, CASE_LOWER));

var_dump($monday, $tuesday, $wednesday, $thursday, $friday, $saturday, $sunday);

//oder so:

//Zurücksetzen
$date = $start;
$weekdays = NULL;
//Wochentage zählen
while($date < $end){
    $weekdays[strftime('%w', $date)]++;   
    $date = $date + 86400;
}
//Weekdays nach Index sortieren
ksort($weekdays);
//Indexe benamsen
$names = array(0 => 'sonntag', 1 => 'montag', 2 =>'dienstag', 3 => 'mittwoch', 4 => 'donnerstag', 5 => 'freitag', 6 => 'samstag');
//Bennante Indexe die Werte zuordnen und als Varibalen ausgeben
extract(array_combine($names, $weekdays));
var_dump($montag, $dienstag, $mittwoch, $donnerstag, $freitag, $samstag, $sonntag);

?>
 
Zurück