Signatur
Beschreibung
datefmt_set_pattern() ist die prozedurale Variante der Methode IntlDateFormatter::setPattern() und ermöglicht es, das Formatierungsmuster eines bestehenden IntlDateFormatter-Objekts nachträglich zu ändern. Das Muster folgt der ICU-Datetime-Musternotation, wie etwa 'dd.MM.yyyy HH:mm:ss' oder 'EEEE, d. MMMM yyyy'.
Diese Funktion ist besonders nützlich, wenn ein IntlDateFormatter-Objekt bereits erstellt wurde, aber für unterschiedliche Ausgabeformate wiederverwendet werden soll, ohne jedes Mal ein neues Objekt erstellen zu müssen. So lässt sich Speicher und Initialisierungsaufwand sparen.
Das gesetzte Muster überschreibt dabei die beim Erstellen des Formatters angegebenen Datums- und Uhrzeitstile (IntlDateFormatter::FULL, SHORT usw.) vollständig. Ein zuvor gesetztes Muster kann mit datefmt_get_pattern() wieder ausgelesen werden.
- d = Tag, M = Monat, y = Jahr
- H = Stunde (0–23), h = Stunde (1–12), m = Minute, s = Sekunde
- E = Wochentag (kurz/lang je nach Anzahl), z/Z = Zeitzone
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $formatter Pflicht | IntlDateFormatter | Das IntlDateFormatter-Objekt, dessen Muster geändert werden soll. |
|
| $pattern Pflicht | string | Das neue ICU-Datums-/Uhrzeit-Muster als Zeichenkette, z. B. 'dd.MM.yyyy HH:mm'. Ein leerer String ist ungültig und führt zu einem Fehler. |
Rückgabewert
true zurück, wenn das Muster erfolgreich gesetzt wurde, andernfalls false. Im Fehlerfall kann mit intl_get_error_message() die Fehlerursache ermittelt werden.Beispiele
Datum im deutschen Format ausgeben
<?php
$formatter = datefmt_create(
'de_DE',
IntlDateFormatter::FULL,
IntlDateFormatter::FULL,
'Europe/Berlin',
IntlDateFormatter::GREGORIAN
);
// Muster setzen: deutsches Langformat
datefmt_set_pattern($formatter, 'EEEE, d. MMMM yyyy');
$timestamp = mktime(0, 0, 0, 12, 24, 2024);
echo datefmt_format($formatter, $timestamp);
// z. B.: Dienstag, 24. Dezember 2024
Formatter-Objekt für mehrere Formate wiederverwenden
<?php
$formatter = datefmt_create(
'de_DE',
IntlDateFormatter::SHORT,
IntlDateFormatter::SHORT,
'Europe/Berlin',
IntlDateFormatter::GREGORIAN
);
$timestamp = mktime(14, 30, 0, 6, 15, 2025);
// Erstes Muster: Datum und Uhrzeit
datefmt_set_pattern($formatter, 'dd.MM.yyyy HH:mm');
echo 'Datum + Uhrzeit: ' . datefmt_format($formatter, $timestamp) . PHP_EOL;
// Zweites Muster: nur Uhrzeit
datefmt_set_pattern($formatter, 'HH:mm:ss');
echo 'Nur Uhrzeit: ' . datefmt_format($formatter, $timestamp) . PHP_EOL;
// Aktuelles Muster ausgeben
echo 'Aktuelles Muster: ' . datefmt_get_pattern($formatter) . PHP_EOL;
// Wichtig · Fallstricke
Musterzeichen sind fallsensitiv und mengenabhängig: M steht für Monat numerisch (ein- oder zweistellig), MM für zweistellig, MMM für abgekürzten Monatsnamen und MMMM für den vollständigen Namen. Falsch gesetzte Muster können zu unerwarteten oder leeren Ausgaben führen.
Ungültige Musterzeichenketten werden von der ICU-Bibliothek abgelehnt; die Funktion gibt dann false zurück und setzt einen internen Fehler. Dieser kann mit intl_get_error_code() und intl_get_error_message() abgefragt werden.
Das Setzen eines Musters hat keinen Einfluss auf die beim Erstellen des Formatters gewählte Locale oder Zeitzone — diese bleiben unverändert.