Start · Sprachen · PHP · Referenz · datefmt_get_pattern

datefmt_get_pattern

Funktion

Gibt das aktuell verwendete Muster (Pattern) eines <code>IntlDateFormatter</code>-Objekts zurück.

seit PHP 5.3.0 Kategorie: string

Signatur

datefmt_get_pattern(IntlDateFormatter $formatter): string|false

Beschreibung

datefmt_get_pattern() ist die prozedurale Variante der Methode IntlDateFormatter::getPattern() und liefert das ICU-Muster (Pattern), das der angegebene Datumsformatierer zur Formatierung bzw. Analyse von Datums- und Zeitwerten verwendet.

Das zurückgegebene Muster entspricht der ICU-Syntax für Datums- und Zeitformate, z. B. 'dd.MM.yyyy HH:mm:ss'. Dieses Muster kann entweder automatisch anhand der Locale und des Formatierungsstils gesetzt worden sein oder durch einen vorherigen Aufruf von datefmt_set_pattern() manuell definiert worden sein.

Die Funktion ist besonders nützlich, wenn man das aktuelle Muster eines Formatters auslesen möchte, um es zu prüfen, anzupassen oder in eine andere Komponente weiterzugeben. Sie arbeitet eng mit datefmt_set_pattern() zusammen, mit dem sich das Muster nachträglich ändern lässt.

Bei ungültigem $formatter-Objekt oder internem Fehler gibt die Funktion false zurück.

Parameter

Name Typ Default Beschreibung
$formatter Pflicht IntlDateFormatter Das IntlDateFormatter-Objekt, dessen Muster abgerufen werden soll.

Rückgabewert

Typ
string|false
Beschreibung
Gibt das aktuelle ICU-Muster des Formatters als string zurück, oder false bei einem Fehler.

Beispiele

Muster eines Formatters mit vordefiniertem Stil auslesen

<?php
$formatter = datefmt_create(
    'de_DE',
    IntlDateFormatter::FULL,
    IntlDateFormatter::FULL,
    'Europe/Berlin',
    IntlDateFormatter::GREGORIAN
);

$pattern = datefmt_get_pattern($formatter);
echo 'Aktuelles Muster: ' . $pattern;
Aktuelles Muster: EEEE, d. MMMM y 'um' HH:mm:ss zzzz

Muster auslesen nach manuellem Setzen mit datefmt_set_pattern

<?php
$formatter = datefmt_create(
    'de_DE',
    IntlDateFormatter::SHORT,
    IntlDateFormatter::SHORT,
    'Europe/Berlin',
    IntlDateFormatter::GREGORIAN
);

// Muster vor Änderung
echo 'Vorher: ' . datefmt_get_pattern($formatter) . PHP_EOL;

// Muster anpassen
datefmt_set_pattern($formatter, 'dd.MM.yyyy HH:mm');

// Muster nach Änderung
echo 'Nachher: ' . datefmt_get_pattern($formatter) . PHP_EOL;

// Datum mit dem neuen Muster formatieren
echo datefmt_format($formatter, mktime(14, 30, 0, 6, 15, 2024)) . PHP_EOL;
Vorher: dd.MM.yy, HH:mm Nachher: dd.MM.yyyy HH:mm 15.06.2024 14:30

// Wichtig · Fallstricke

ICU-Muster: Das zurückgegebene Muster folgt der ICU-Datums-/Zeitformat-Syntax. Buchstaben wie y (Jahr), M (Monat), d (Tag), H (Stunde, 0–23) haben dort eine festgelegte Bedeutung und unterscheiden sich teils erheblich von der PHP-eigenen date()-Syntax.

Die Funktion setzt voraus, dass die PHP-Extension intl installiert und aktiviert ist. Fehlt diese, steht weder datefmt_get_pattern() noch IntlDateFormatter zur Verfügung.

Das Muster kann je nach Locale und ICU-Version variieren. Wer portablen Code schreiben will, sollte das Muster explizit über datefmt_set_pattern() setzen, anstatt sich auf locale-abhängige Standardmuster zu verlassen.