Signatur
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
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;
}
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'));
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;
}
}
// 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().