Start · Sprachen · PHP · Referenz · datefmt_create

datefmt_create

Funktion

Erstellt einen <code>IntlDateFormatter</code>-Objekt zur lokalisierten Formatierung und Analyse von Datums- und Zeitwerten gemäß dem ICU-Standard.

seit PHP 5.3.0 Kategorie: string

Signatur

datefmt_create(string $locale, int $dateType, int $timeType, DateTimeZone|IntlTimeZone|string|null $timezone = null, IntlCalendar|int|null $calendar = null, string $pattern = ''): IntlDateFormatter|null

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

Typ
IntlDateFormatter|null
Beschreibung
Gibt ein 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);
15. Juni 2024 um 14:30

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'));
15.06.2024 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';
}
2024-06-15

// 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.