Start · Sprachen · PHP · Referenz · datefmt_format

datefmt_format

Funktion

Formatiert einen Datums-/Zeitwert gemäß den Einstellungen eines <code>IntlDateFormatter</code>-Objekts als lokalisierten String.

seit PHP 5.3.0 Kategorie: string

Signatur

datefmt_format(IntlDateFormatter $formatter, IntlCalendar|DateTimeInterface|array|string|int|float $value): string|false

Beschreibung

datefmt_format() ist die prozedurale Variante von IntlDateFormatter::format() und formatiert einen Datums- oder Zeitwert anhand der im IntlDateFormatter-Objekt hinterlegten Locale, des Datums- und Zeitstils sowie der Zeitzone zu einem menschenlesbaren, lokalisierten String.

Die Funktion akzeptiert als Eingabe verschiedene Typen: Unix-Timestamps (Integer oder Float), Datums-Arrays im Stil von localtime(), DateTimeInterface-Objekte (z. B. DateTime, DateTimeImmutable) sowie IntlCalendar-Objekte. Dies macht sie sehr flexibel in verschiedenen Anwendungssituationen.

Im Gegensatz zu PHPs eingebauter date()-Funktion unterstützt datefmt_format() vollständige Internationalisierung: Monats- und Wochentagsnamen, Kalenderformate und Uhrzeitdarstellungen werden korrekt für die jeweilige Sprache und Region ausgegeben. Sie eignet sich daher ideal für mehrsprachige Anwendungen oder überall dort, wo eine locale-gerechte Datumsdarstellung erforderlich ist.

Schlägt die Formatierung fehl, gibt die Funktion false zurück; mit datefmt_get_error_message() lässt sich die genaue Fehlerursache ermitteln.

Parameter

Name Typ Default Beschreibung
$formatter Pflicht IntlDateFormatter Ein IntlDateFormatter-Objekt, das Locale, Datumsstil, Zeitstil und Zeitzone enthält.
$value Pflicht IntlCalendar|DateTimeInterface|array|string|int|float Der zu formatierende Wert. Kann ein Unix-Timestamp (Integer/Float), ein DateTimeInterface-Objekt, ein IntlCalendar-Objekt oder ein Array im Format von localtime() sein.

Rückgabewert

Typ
string|false
Beschreibung
Gibt den formatierten Datums-/Zeitstring zurück. Im Fehlerfall wird false zurückgegeben; die Fehlerursache kann mit datefmt_get_error_message() abgefragt werden.

Beispiele

Datum im deutschen Format ausgeben

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

$timestamp = mktime(0, 0, 0, 7, 4, 2025);
$result = datefmt_format($formatter, $timestamp);
echo $result;
4. Juli 2025

Datum und Uhrzeit mit DateTimeImmutable und verschiedenen Locales

<?php
$date = new DateTimeImmutable('2025-03-15 14:30:00', new DateTimeZone('Europe/Berlin'));

$locales = ['de_DE', 'en_US', 'fr_FR', 'ja_JP'];

foreach ($locales as $locale) {
    $formatter = datefmt_create(
        $locale,
        IntlDateFormatter::MEDIUM,
        IntlDateFormatter::SHORT,
        'Europe/Berlin',
        IntlDateFormatter::GREGORIAN
    );
    echo $locale . ': ' . datefmt_format($formatter, $date) . PHP_EOL;
}
de_DE: 15.03.2025, 14:30 en_US: Mar 15, 2025, 2:30 PM fr_FR: 15 mars 2025, 14:30 ja_JP: 2025/03/15 14:30

Fehlerbehandlung bei ungültiger Eingabe

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

$result = datefmt_format($formatter, PHP_INT_MAX);
if ($result === false) {
    echo 'Fehler: ' . datefmt_get_error_message($formatter);
} else {
    echo $result;
}

// Wichtig · Fallstricke

Zeichenkodierung: Die Ausgabe von datefmt_format() ist immer in UTF-8 kodiert, unabhängig von der internen Kodierung der PHP-Anwendung.

Float-Timestamps: Bei Übergabe eines Floats als Timestamp wird der Bruchteil als Subsekundenanteil interpretiert. Dies ist nützlich, wenn Millisekunden-Genauigkeit benötigt wird.

Timezone-Priorität: Wenn ein DateTimeInterface- oder IntlCalendar-Objekt übergeben wird, dessen Zeitzone von der im Formatter eingestellten abweicht, wird die Zeitzone des Formatters für die Ausgabe verwendet — dies kann zu überraschenden Ergebnissen führen.

OOP-Äquivalent: Statt der prozeduralen Form kann auch die objektorientierte Methode IntlDateFormatter::format($value) verwendet werden, die identisch funktioniert.