Skip to main content

Kalender Widget mit Überstzung

Erstelle dynamisches Output und konfiguriere die Serverumgebung für deine Region
Der Hintergrund

Da PHP auf dem Server läuft, ist unser Projekt von dessen Konfiguration abhängig. Dies zeigt sich insbesondere bei der Verwendung von Formatierungen, zum Beispiel für Datums-Strings. Datum und Zeit mögen korrekt sein, werden aber nur in Englisch ausgegeben? 

Hier können wir mit einer PHP Extension arbeiten, die auch auf deinem Testserver aktiviert werden können - sie heisst IntlDateFormatter und ist Teil der Internationalization (Intl) Erweiterung von PHP. Mit IntlDateFormatter kannst du z.B. ein Datum in verschiedenen Sprachen und Formaten ausgeben, ohne den zugrunde liegenden Code zu ändern.

Sie ist als Klasse organisiert, das heisst, wir greifen auf ein schon vordefiniertes Objekt und dessen Methoden (Funktionen) zu. Objekte können unterschiedliche Formen annehmen, was die Flexibilität und Anpassungsfähigkeit des Codes erhöht. Du musst das Konzept von OOP (objektorientierter Programmierung) aber nicht in allen Details verstehen, um die praktische Funktionalität zu nutzen. Beachte vorerst einfach die etwas andere Vorgehensweise.

Wir verwenden in diesem Beispiel die Klasse DateTime sowie die Klasse IntlDateFormatter. Anders als im prozeduralen Code, wo wir einfach Funktionen aufrufen, erstellen wir erst ein Objekt (Instanz).

// Das DateTime Objekt wird erstellt 
$date = new DateTime('2024-09-05'); // Irgendein Datum 
$date = new DateTime('now'); // aktuelles Datum

 Bei IntlDateFormatter sieht die Instanzierung dann so aus: 

// Parameter von IntlDateFormatter als Variable speichern und den Code so kurz halten:
$format = IntlDateFormatter::FULL; // Länge des Kompletten Datum/Zeitstrings
$lang = 'de_DE'; // bestimmt die lokale Umgebung (Sprache/Region)

// Objekt instanzieren
$dayFormatter = new IntlDateFormatter($lang, $format, $format);

Wir können den DateFormatter nun auch verwenden, um nur einzelne Informationen zu formatieren, zum Beispiel den Wochentag. 

// Instanzierung eines Formatierungsobjekts für die Ausgabe des Wochentags (String 'EEEE')
$dayFormatter = new IntlDateFormatter($lang, $format, $format, null, null, 'EEEE');

 


So geht's

  1. Lade die Datei kalender-1.zip herunter und öffne das HTML-File darin
  2. Speichere kalender_vorlage.html als kalender_vorlage.php ab, damit Du darin PHP ausführen kannst
  3. Bereite nun dein Script für den DateFormatter vor
    // Formatter konfigurieren
    $format = IntlDateFormatter::NONE; // hat hier keine Auswirkung
    $language = 'de_DE'; // bestimmt die lokale Umgebung (Sprache/Region)
  4. Erstelle dann auch noch ein DateTime Objekt, um die aktuelle Datumsinformation zu erhalten
    // DateTime-Objekt erstellen
    $date = new DateTime('now');
  5. Rufe die Datei im Browser auf und betrachte sie: es sind 4 Datumswerte enthalten

  6. Erstelle nun einen DateFormatter für den Wochentag
    // Format-Objekt für den Wochentag
    $dayFormatter = new IntlDateFormatter($language, $format, $format, null, null, 'EEEE');
  7. Gebe den formatierten Datumswert nun im bestehenden HTML aus, indem Du den DayFormatter verwendest:
    <h2>Montag</h2>
    wird zu:
    <h2><?php echo $dayFormatter->format($date); ?></h2>
  8. Verfahre nun genau gleich für den Tag des Monats, Monat und Jahr

Tips und Links

Hier findest du eine Tabelle mit den möglichen Formaten für den IntlDateFormatter:
https://unicode-org.github.io/icu/userguide/format_parse/datetime 

Start

HTML Output steuern

Verstehen, wie PHP mit HTML zusammen funktioniert


Tags
Kategorie