Ersten Freitag im Monat berechnen

Operator_Jon

Erfahrenes Mitglied
Hi!

Ich suche nun schon seit einer Stunde verzweifelt nach der Lösung folgenden Problems:
Ich möchte gerne, sozusagen von "null" auf, den bspw. ersten Freitag im Monat berechnen.
Im März also z.B. der 03.03.2006 und im April z.B. den 07.04.2006.
Ich dachte da irgendwie an die [phpf]strtotime[/phpf] Funktion, aber das klappt nicht so wie ich mir das denke, bzw. es klappt garnicht...

Danke
 

hpvw

Erfahrenes Mitglied
[phpf]strtotime[/phpf] ist schon richtig.
Hier ein Beispiel:
PHP:
<?php
for ($year = 2005; $year < 2008;$year++) {
    for ($month = 1; $month < 13; $month++) {
        echo date("Y-m-d",
                strtotime("-1 week next Friday",
                    mktime(0,0,0,$month,1,$year)))
            ."<br>\n";
    }
}
?>
Nach stichprobenartigen Tests sind die Ergebnisse richtig.

Gruß hpvw
 

Operator_Jon

Erfahrenes Mitglied
Ok, ich habe gerade bemerkt das das mein Problem nicht löst, das ich also die Frage falsch gestellt habe!

Das ganze muss ein wenig dynamischer sein, also für bspw. den 3ten Freitag im Monat auch funktionieren!
So wie es jetzt ist funktioniert es ja leider nur für den 1sten.
Dazu brauche ich dann auch nicht das Datum des Tages, sondern eigentlich nur die Zahl, also beim 03.03 z.B. die 1.

Danke nochmal :)
 
Zuletzt bearbeitet:

FipsTheThief

Erfahrenes Mitglied
Also damit hier sollte das eigentlich gar kein problem darstellen

date("w")

• w - Wochentag (0(Sonntag) bis 6(Samstag))

Freitag somit auf Platz Nummer 5

Zusammen mit der mktime() Funktion sollte das dann ohne probleme gehen alles.

Das mit der Zahl verstehe ich nun nicht so wirklich , ansonsten würde ich nur den ersten des Monats suchen. Dann einfach bis zu einen Freitag gehen und immer 7 Tage aufrechnen dann.
 
Zuletzt bearbeitet:

hpvw

Erfahrenes Mitglied
Suchst Du das hier?
PHP:
<?php

    function getDayOfWeekCount($ts) {
        $dayDE = array(
                'Sonntag',
                'Montag',
                'Dienstag',
                'Mittwoch',
                'Donnerstag',
                'Freitag',
                'Samstag');
        $dayOfWeek = date("w",$ts);
        $day = $ts;
        $count = 1;
        while (($day = strtotime("-1 week",$day))
                > mktime(0,0,0,date("n",$ts),0,date("Y",$ts))) {
            $count++;
        }
        
        return "Der ".date("j.n.Y",$ts)." ist der "
                .$count.". ".$dayDE[$dayOfWeek]." des Monats.";
    }
    
    echo getDayOfWeekCount(mktime(0,0,0,3,31,2006));

    //Ausgabe: Der 31.3.2006 ist der 5. Freitag des Monats.

?>
Ansonsten beschreibe etwas genauer Deine Eingabe und die gewünschte Ausgabe.

Gruß hpvw
 

Operator_Jon

Erfahrenes Mitglied
date("W")
wird mir da kaum helfen können, weil ich nicht die Nummer des Tages in der Woche brache, sondern des Tages im Monat!

Und ich wollte es eigentlich lösen ohne vorher den ganzen Monat einmal in einer Schleife zu durchlaufen :)


@hpvw
Das sieht gut aus, ich probiers mal eben!

/€dit:
Perfekt, klappt super, danke!
 
Zuletzt bearbeitet: