format('Ymd'); // Nur zukünftige Termine anzeigen $future_events = array_filter($events, function ($event) use ($today) { return isset($event['DTSTART']) && $event['DTSTART'] >= $today; }); // Termine nach DTSTART in aufsteigender Reihenfolge sortieren usort($future_events, function ($a, $b) { return $a['DTSTART'] <=> $b['DTSTART']; }); // --- Deutsche Monatsnamen --- $de_months = [ '01' => 'Jan', '02' => 'Feb', '03' => 'Mrz', '04' => 'Apr', '05' => 'Mai', '06' => 'Jun', '07' => 'Jul', '08' => 'Aug', '09' => 'Sep', '10' => 'Okt', '11' => 'Nov', '12' => 'Dez', ]; ?>

Bevorstehende Termine

'', 'has_time' => false, 'iso' => '']; $date = $date_info['display'] ?? ''; $time = ($date_info['has_time'] ?? false) ? substr($date, 11) : 'ganztägig'; $day = substr($date, 0, 2); $month = substr($date, 3, 2); $iso_date = $date_info['iso'] ?? ''; // Sichere Array-Zugriffe $month_name = $de_months[$month] ?? 'Unbek'; $event_summary = htmlspecialchars($summary, ENT_QUOTES, 'UTF-8'); $safe_day = htmlspecialchars($day, ENT_QUOTES, 'UTF-8'); $safe_iso_date = htmlspecialchars($iso_date, ENT_QUOTES, 'UTF-8'); $safe_time = htmlspecialchars($time, ENT_QUOTES, 'UTF-8'); ?>

ab Uhr ganztägig