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