======[PHP] findWeekDays======
Eine einfache kleine Funktion um alle Tage ienes bestimmten Wochentages eines Monats zu ermitteln. 'Gib mir alle Freitage im August 2012'
=====ab PHP5.3=====
====Code====
/**
* @param Wochentag Analog date('D')
* @param Monat
* @param Jahr
* @return
*/
function findWeekdays($weekday, $month, $year) {
$dateFrom = clone $dateTo = DateTime::createFromFormat('d.n.Y', "1.{$month}.{$year}");
$dateFrom->modify('first day of +0 month');
$dateTo->modify('last day of +0 month');
$interval = DateInterval::createFromDateString("next {$weekday}");
return new DatePeriod($dateFrom, $interval, $dateTo, DatePeriod::EXCLUDE_START_DATE);
}
====Anwendungsbeispiel ====
$period = findWeekdays('fri', 9, 2012);
foreach($period as $date){
echo $date->format("l d.m.Y\n");
}
=====bis PHP5.2=====
====Code====
*/
function findWeekdays($weekday, $month, $year) {
$date = strtotime("next {$weekday}", mktime(0, 0, 0, $month, 1, $year));
while(date('n', $date) == $month){
$dates[] = $date;
$date = strtotime("next {$weekday}", $date);
}
return $dates;
}
?>
====Anwendungsbeispiel ====
$dates = findWeekdays('fri', 9, 2012);
foreach ($dates as $date) {
echo date('l, d.m.Y', $date) . '
';
}
?>
===== Ausgabe beider Versionen=====
Friday, 07.09.2012
Friday, 14.09.2012
Friday, 21.09.2012
Friday, 28.09.2012
{{tag>PHP Function Date}}