Tach!
leider verstehe ich nicht so recht was ihr meint bzw. wie ich es umsetzten soll. Meine Ansatz ist:
$startDate = new DateTime('2018-01-01'); $endDate = new DateTime('2018-01-18'); $diff = $startDate->diff($endDate); echo $diff->days+1; //18Warum ist eine +1 Nutzen muss weiß ich nicht. Ohne diese bekomme ich nur 17 Tage.
Die Differenz zwischen dem ersten (0 Uhr) und dem zweiten (0 Uhr) ist ein Tag, nicht zwei. Deshalb ist auch der 18. nicht 18 sondern 17 Tage vom ersten entfernt. Wenn du den 18 mit berücksichtigen möchtest, musst du dessen Ende nehmen, oder den Anfang vom nächsten Tag.
$startDate += 3600*24;
Und an Schalttagen? Rechne bei Tagesabständen nicht mit Sekunden, sondern lass die Mathematik vom System erledigen. strtotime() kann ganze Tage hinzufügen und macht das auch an Schalttagen richtig.
Du brauchst das auch nicht zu Fuß aufzusetzen, denn DatePeriod gibt dir bereits eine Liste mit dem gewünschten Interval zwischen Start und Ende.
Der 01.01.2018 war ein Montag und heute haben wir Donnerstag, daher stimmt die Ausgabe. Habe ich jetzt eine Möglichkeit zu wählen wie viele Samstage und wie viele Sonntage darin vorkommen?
Mein Vorschlag war nun, sie zu zählen, indem du die Liste durchläufst und wenn Wochenendtag ist, dann den Zähler um eins erhöhen. RolfBs Vorschlag beruht hingegen auf Mathematik. Ist etwas komplexer aufzusetzen und zu durchschauen, dafür ist es aber bei größeren Intervallen vermutlich deutlich schneller als eine Liste durchzulaufen.
dedlfix.