Start · Sprachen · PHP · Referenz · datefmt_set_timezone

datefmt_set_timezone

Funktion

Setzt die Zeitzone des <code>IntlDateFormatter</code>-Objekts für nachfolgende Formatierungs- und Parsing-Operationen.

seit PHP 5.5.0 Kategorie: string

Signatur

datefmt_set_timezone(IntlDateFormatter $formatter, IntlTimeZone|DateTimeZone|string|null $timezone): bool

Beschreibung

datefmt_set_timezone() ist die prozedurale Variante der Methode IntlDateFormatter::setTimeZone() und legt die Zeitzone fest, die der Formatter beim Formatieren von Datumswerten und beim Parsen von Datums-Strings verwenden soll. Sie ersetzt eine zuvor gesetzte Zeitzone vollständig.

Als Zeitzone kann ein IntlTimeZone-Objekt, ein DateTimeZone-Objekt, ein Zeitzonenbezeichner als String (z. B. 'Europe/Berlin') oder null übergeben werden. Bei null wird die aktuell in PHP konfigurierte Standard-Zeitzone (date_default_timezone_get()) verwendet.

Diese Funktion ist besonders nützlich, wenn ein einmal erstellter Formatter in verschiedenen Zeitzonen-Kontexten wiederverwendet werden soll, ohne ihn neu erzeugen zu müssen – etwa bei der Darstellung von Terminen für Nutzer in unterschiedlichen Regionen.

Beachte, dass eine ungültige Zeitzone-Angabe dazu führt, dass die Funktion false zurückgibt und die bisherige Zeitzone des Formatters unverändert bleibt.

Parameter

Name Typ Default Beschreibung
$formatter Pflicht IntlDateFormatter Das IntlDateFormatter-Objekt, dessen Zeitzone geändert werden soll.
$timezone Pflicht IntlTimeZone|DateTimeZone|string|null Die neue Zeitzone. Akzeptiert ein IntlTimeZone- oder DateTimeZone-Objekt, einen Zeitzonenbezeichner als String (z. B. 'America/New_York') oder null, um die PHP-Standard-Zeitzone zu verwenden.

Rückgabewert

Typ
bool
Beschreibung
Gibt true zurück, wenn die Zeitzone erfolgreich gesetzt wurde, andernfalls false (z. B. bei einem ungültigen Zeitzonenbezeichner).

Beispiele

Zeitzone eines Formatters nachträglich ändern

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

$timestamp = mktime(12, 0, 0, 6, 15, 2024);

echo datefmt_format($formatter, $timestamp) . PHP_EOL;
// Ausgabe mit Europe/Berlin

datefmt_set_timezone($formatter, 'America/New_York');
echo datefmt_format($formatter, $timestamp) . PHP_EOL;
// Ausgabe mit America/New_York
Samstag, 15. Juni 2024 um 12:00 MESZ Samstag, 15. Juni 2024 um 06:00 EDT

Zeitzone auf PHP-Standard zurücksetzen mit null

<?php
date_default_timezone_set('Asia/Tokyo');

$formatter = datefmt_create(
    'de_DE',
    IntlDateFormatter::MEDIUM,
    IntlDateFormatter::SHORT,
    'Europe/London'
);

$timestamp = mktime(0, 0, 0, 1, 1, 2024);
echo datefmt_format($formatter, $timestamp) . PHP_EOL;
// Ausgabe in Europe/London

// Zurück zur PHP-Standardzeitzone (Asia/Tokyo)
$result = datefmt_set_timezone($formatter, null);
var_dump($result);
echo datefmt_format($formatter, $timestamp) . PHP_EOL;
01.01.2024, 00:00 bool(true) 01.01.2024, 09:00

// Wichtig · Fallstricke

Ungültige Zeitzone: Wird ein nicht existierender oder fehlerhafter Zeitzonenbezeichner übergeben, gibt die Funktion false zurück und die Zeitzone des Formatters bleibt unverändert. Es wird kein PHP-Fehler ausgelöst – prüfe daher immer den Rückgabewert.

OOP-Äquivalent: Diese Funktion entspricht IntlDateFormatter::setTimeZone(). In modernem Code wird die objektorientierte Variante bevorzugt.

Abhängigkeit von der ICU-Bibliothek: Die verfügbaren Zeitzonen hängen von der installierten ICU-Version ab und können von PHP's eigener Zeitzonendatenbank abweichen.