<?php

function nextThirdWednesday() {
    // Set the default time zone to your desired one
    date_default_timezone_set('Europe/Berlin');

    $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.
    }


    $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;
}

?>
