Signatur
Beschreibung
datefmt_create() ist die prozedurale Variante von IntlDateFormatter::create() bzw. dem IntlDateFormatter-Konstruktor. Sie erzeugt einen Formatter, der Datums- und Zeitwerte entsprechend einer Locale (z. B. de_DE, en_US) formatiert und parst. Das Ergebnis berücksichtigt Sprache, Region und Kalendersystem automatisch.
Über die Parameter $dateType und $timeType wird gesteuert, welche Anteile (Datum, Uhrzeit oder beides) und in welcher Ausführlichkeit (IntlDateFormatter::SHORT, MEDIUM, LONG, FULL oder NONE) dargestellt werden. Alternativ lässt sich über $pattern ein benutzerdefiniertes ICU-Muster angeben (z. B. dd.MM.yyyy HH:mm).
Die Funktion eignet sich besonders für mehrsprachige Anwendungen, bei denen Datums- und Zeitangaben korrekt lokalisiert ausgegeben oder aus Benutzereingaben geparst werden müssen, ohne manuell locale-spezifische Formate pflegen zu müssen.
Für objektorientierte Projekte wird die Klasse IntlDateFormatter direkt empfohlen; datefmt_create() bietet dieselbe Funktionalität als Funktion.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $locale Pflicht | string | Die Locale, nach der Datum und Zeit formatiert werden sollen, z. B. de_DE, en_US oder fr_FR. Ein leerer String ('') verwendet die Standard-Locale. |
|
| $dateType Pflicht | int | Legt die Formatierung des Datumsanteils fest. Erlaubte Werte: IntlDateFormatter::NONE, SHORT, MEDIUM, LONG oder FULL. |
|
| $timeType Pflicht | int | Legt die Formatierung des Zeitanteils fest. Erlaubte Werte: IntlDateFormatter::NONE, SHORT, MEDIUM, LONG oder FULL. |
|
| $timezone | DateTimeZone|IntlTimeZone|string|null | null | Die Zeitzone, die der Formatter verwenden soll. Akzeptiert einen IANA-Zeitzonennamen (Europe/Berlin), ein DateTimeZone- oder IntlTimeZone-Objekt. Bei null wird die Standard-Zeitzone verwendet. |
| $calendar | IntlCalendar|int|null | null | Das zu verwendende Kalendersystem. Entweder eine IntlCalendar-Instanz oder eine Konstante wie IntlDateFormatter::GREGORIAN bzw. IntlDateFormatter::TRADITIONAL. Bei null wird der gregorianische Kalender verwendet. |
| $pattern | string | '' | Ein optionales ICU-Mustermuster, z. B. dd.MM.yyyy HH:mm:ss. Wenn angegeben, überschreibt es die Einstellungen von $dateType und $timeType. |
Rückgabewert
IntlDateFormatter-Objekt zurück, oder null bei einem Fehler (z. B. ungültige Locale oder fehlerhafte Parameter).Beispiele
Datum lokalisiert für Deutschland formatieren
<?php
$fmt = datefmt_create(
'de_DE',
IntlDateFormatter::LONG,
IntlDateFormatter::SHORT,
'Europe/Berlin',
IntlDateFormatter::GREGORIAN
);
$timestamp = mktime(14, 30, 0, 6, 15, 2024);
echo datefmt_format($fmt, $timestamp);
Benutzerdefiniertes Muster verwenden
<?php
$fmt = datefmt_create(
'de_DE',
IntlDateFormatter::NONE,
IntlDateFormatter::NONE,
'Europe/Berlin',
IntlDateFormatter::GREGORIAN,
'dd.MM.yyyy HH:mm:ss'
);
echo datefmt_format($fmt, new DateTime('2024-06-15 14:30:00'));
Lokalisiertes Datum aus Benutzereingabe parsen
<?php
$fmt = datefmt_create(
'de_DE',
IntlDateFormatter::SHORT,
IntlDateFormatter::NONE,
'Europe/Berlin'
);
$timestamp = datefmt_parse($fmt, '15.06.2024');
if ($timestamp !== false) {
echo date('Y-m-d', $timestamp);
} else {
echo 'Ungültiges Datum';
}
// Wichtig · Fallstricke
Erweiterung erforderlich: datefmt_create() setzt die PHP-Erweiterung intl voraus. Diese ist standardmäßig nicht in allen PHP-Installationen aktiviert. Prüfen Sie mit extension_loaded('intl'), ob sie verfügbar ist.
ICU-Version: Das Verhalten und die verfügbaren Locales hängen von der installierten ICU-Bibliotheksversion ab. Abweichungen in der Ausgabe zwischen Systemen sind möglich.
Rückgabe null prüfen: Bei ungültiger Locale oder falsch gesetzten Parametern gibt die Funktion null zurück. Der Rückgabewert sollte daher immer geprüft werden, bevor datefmt_format() oder datefmt_parse() aufgerufen wird.