Start · Sprachen · PHP · Referenz · intltz_get_windows_id

intltz_get_windows_id

Funktion

Übersetzt eine IANA/System-Zeitzonenkennung in die entsprechende Windows-Zeitzonenkennung.

seit PHP 7.1.0 Kategorie: string

Signatur

intltz_get_windows_id(string $timezoneId): string|false

Beschreibung

intltz_get_windows_id() konvertiert eine Standard-IANA-Zeitzonenkennung (z. B. Europe/Berlin) in die entsprechende Windows-Zeitzonenkennung (z. B. W. Europe Standard Time). Diese Funktion ist die prozedurale Variante der Methode IntlTimeZone::getWindowsID().

Windows verwendet ein eigenes Zeitzonensystem, das nicht mit den IANA-Zeitzonen (auch als Olson-Zeitzonen bekannt) übereinstimmt. Diese Funktion ermöglicht es, zwischen den beiden Systemen zu übersetzen – was besonders dann wichtig ist, wenn PHP-Anwendungen mit Windows-Diensten, Exchange-Servern, .NET-Anwendungen oder anderen Windows-basierten APIs kommunizieren, die Windows-Zeitzonennamen erwarten.

Die Funktion nutzt die ICU-Bibliothek (International Components for Unicode), die intern eine Zuordnungstabelle zwischen IANA- und Windows-Zeitzonennamen pflegt. Das Ergebnis kann daher von der installierten ICU-Version abhängen.

Ist keine Zuordnung für die angegebene Zeitzone bekannt, gibt die Funktion false zurück. Es empfiehlt sich daher, den Rückgabewert stets auf false zu prüfen.

Parameter

Name Typ Default Beschreibung
$timezoneId Pflicht string Eine gültige IANA-Zeitzonenkennung (z. B. Europe/Berlin, America/New_York), die in eine Windows-Zeitzonenkennung übersetzt werden soll.

Rückgabewert

Typ
string|false
Beschreibung
Gibt die entsprechende Windows-Zeitzonenkennung als string zurück (z. B. W. Europe Standard Time). Wenn keine Zuordnung gefunden wird oder die Eingabe ungültig ist, wird false zurückgegeben.

Beispiele

Einfache Umwandlung einer IANA-Zeitzone in eine Windows-Zeitzone

<?php
$windowsId = intltz_get_windows_id('Europe/Berlin');

if ($windowsId !== false) {
    echo 'Windows-Zeitzone: ' . $windowsId;
} else {
    echo 'Keine Zuordnung gefunden.';
}
Windows-Zeitzone: W. Europe Standard Time

Batch-Konvertierung mehrerer IANA-Zeitzonen für eine Windows-API

<?php
$ianaZones = [
    'Europe/Berlin',
    'America/New_York',
    'Asia/Tokyo',
    'Pacific/Auckland',
    'Invalid/Zone',
];

foreach ($ianaZones as $zone) {
    $windowsId = intltz_get_windows_id($zone);
    if ($windowsId !== false) {
        printf("%-30s => %s\n", $zone, $windowsId);
    } else {
        printf("%-30s => (keine Zuordnung)\n", $zone);
    }
}
Europe/Berlin => W. Europe Standard Time America/New_York => Eastern Standard Time Asia/Tokyo => Tokyo Standard Time Pacific/Auckland => New Zealand Standard Time Invalid/Zone => (keine Zuordnung)

Verwendung der OOP-Variante zum Vergleich

<?php
// Prozedurale Variante
$prozeduralErgebnis = intltz_get_windows_id('Europe/London');

// OOP-Variante (äquivalent)
oopErgebnis = IntlTimeZone::getWindowsID('Europe/London');

echo $prozeduralErgebnis . PHP_EOL;
echo $oopErgebnis . PHP_EOL;
GMT Standard Time GMT Standard Time

// Wichtig · Fallstricke

ICU-Versionsabhängigkeit: Da die Zuordnungstabelle von der installierten ICU-Bibliothek stammt, können sich die Ergebnisse je nach ICU-Version und Betriebssystem unterscheiden. Ältere ICU-Versionen kennen möglicherweise neuere IANA-Zeitzonen noch nicht.

Umgekehrte Konvertierung: Für die umgekehrte Richtung (Windows-Zeitzone zu IANA) steht intltz_get_id_for_windows_id() zur Verfügung.

Verfügbarkeit: Diese Funktion erfordert, dass PHP mit der ICU-Erweiterung (intl) kompiliert wurde. Falls die intl-Extension nicht geladen ist, führt der Aufruf zu einem fatalen Fehler.