Start · Sprachen · PHP · Referenz · intltz_create_time_zone

intltz_create_time_zone

Funktion

Erstellt ein <code>IntlTimeZone</code>-Objekt für die angegebene Zeitzonen-ID.

seit PHP 5.5.0 Kategorie: string

Signatur

intltz_create_time_zone(string $zoneId): IntlTimeZone|false

Beschreibung

intltz_create_time_zone() ist die prozedurale Variante von IntlTimeZone::createTimeZone() und erzeugt ein IntlTimeZone-Objekt anhand einer IANA-Zeitzonen-ID wie 'Europe/Berlin' oder 'America/New_York'. Diese Objekte werden häufig in Verbindung mit dem IntlCalendar oder IntlDateFormatter eingesetzt, um Datums- und Zeitangaben korrekt in einer bestimmten Zeitzone darzustellen oder zu verarbeiten.

Die übergebene ID muss einer gültigen IANA-Zeitzonendatenbank-ID entsprechen. Falls eine unbekannte ID übergeben wird, verhält sich die Funktion wie die ICU-Bibliothek und gibt in der Regel GMT zurück statt false — es ist daher ratsam, die zurückgegebene ID nachträglich zu prüfen. Nur bei einem internen Fehler wird false zurückgegeben.

Die Funktion ist besonders nützlich, wenn man die ICU-Internationalisierungsfunktionen ohne objektorientierte Schreibweise nutzen möchte oder wenn man Zeitzonendaten an Funktionen wie intlcal_create_instance() übergeben muss.

Parameter

Name Typ Default Beschreibung
$zoneId Pflicht string Eine IANA-Zeitzonen-ID, z. B. 'Europe/Berlin', 'UTC' oder 'America/New_York'. Bei einer unbekannten ID wird in der Regel GMT zurückgegeben statt false.

Rückgabewert

Typ
IntlTimeZone|false
Beschreibung
Gibt bei Erfolg ein IntlTimeZone-Objekt zurück. Bei einem internen Fehler wird false zurückgegeben. Bei einer unbekannten Zeitzonen-ID gibt die ICU-Bibliothek üblicherweise ein Objekt für GMT zurück statt false.

Beispiele

Zeitzonen-Objekt erstellen und Versatz ausgeben

<?php
$tz = intltz_create_time_zone('Europe/Berlin');

if ($tz === false) {
    echo 'Fehler beim Erstellen der Zeitzone.';
} else {
    echo 'Zeitzone: ' . intltz_get_id($tz) . PHP_EOL;
    // Rohversatz in Millisekunden zu Sekunden umrechnen
    $rawOffset = intltz_get_raw_offset($tz);
    echo 'Rohversatz (Stunden): ' . ($rawOffset / 3600000) . PHP_EOL;
}
Zeitzone: Europe/Berlin Rohversatz (Stunden): 1

Zeitzonen-Objekt mit IntlDateFormatter verwenden

<?php
$tz = intltz_create_time_zone('America/New_York');

$formatter = new IntlDateFormatter(
    'de_DE',
    IntlDateFormatter::FULL,
    IntlDateFormatter::FULL,
    $tz
);

echo $formatter->format(new DateTime('2024-06-15 12:00:00 UTC'));
Samstag, 15. Juni 2024 um 08:00:00 Eastern Daylight Time

Prüfung der zurückgegebenen ID bei unbekannter Zeitzone

<?php
$tz = intltz_create_time_zone('Ungueltige/Zeitzone');

if ($tz === false) {
    echo 'Interner Fehler.';
} else {
    $id = intltz_get_id($tz);
    if ($id === 'GMT') {
        echo 'Unbekannte Zeitzonen-ID — Fallback auf GMT.';
    } else {
        echo 'Zeitzone: ' . $id;
    }
}
Unbekannte Zeitzonen-ID — Fallback auf GMT.

// Wichtig · Fallstricke

Achtung bei unbekannten IDs: Die Funktion gibt bei einer ungültigen Zeitzonen-ID nicht zwingend false zurück, sondern fällt auf GMT zurück. Um sicherzustellen, dass die gewünschte Zeitzone tatsächlich erkannt wurde, sollte die zurückgegebene ID mit intltz_get_id() geprüft werden.

Diese Funktion setzt die ICU-Bibliothek voraus. Die verfügbaren Zeitzonen-IDs können sich je nach verwendeter ICU-Version leicht von der IANA-Zeitzonendatenbank unterscheiden. Eine Liste aller unterstützten IDs liefert IntlTimeZone::createEnumeration().