diff( $date )->invert ) { $date = new DateTime( 'third wednesday of next month, 17:00' ); } if ($date->format('m') == '12') { // If it's December, advance to January of the following year $date->modify('third wednesday of January next year'); $date->modify('-1 day'); // not sure why. } $nextThirdWednesdayFormatted = $date->format('d.m.y'); return $nextThirdWednesdayFormatted; } function listNextElevenThirdWendesdays() { date_default_timezone_set('Europe/Berlin'); //Start with the actual next meeting date, that is already calculated by another function already. $date = new DateTime( 'third wednesday of this month, 17:00' ); if( date_create()->diff( $date )->invert ) { $date = new DateTime( 'third wednesday of next month, 17:00' ); } if ($date->format('m') == '12') { // If it's December, advance to January of the following year $date->modify('third wednesday of January next year'); $date->modify('-1 day'); // not sure why. } $result = ""; for ($i=0; $i < 11; $i++) { $date->modify('third wednesday of next month'); //Again: if ($date->format('m') == '12') { // If it's December, advance to January of the following year $date->modify('third wednesday of January next year'); $date->modify('-1 day'); // not sure why. } $result = $result . " " . $date->format('d.m'); } return $result; } ?>