Start · Sprachen · PHP · Referenz · intltz_get_raw_offset

intltz_get_raw_offset

Funktion

Liefert den rohen GMT-Offset einer Zeitzone in Millisekunden, ohne Berücksichtigung der Sommerzeit.

seit PHP 5.5.0 Kategorie: string

Signatur

intltz_get_raw_offset(IntlTimeZone $timezone): int

Beschreibung

intltz_get_raw_offset() gibt den Basis-Offset einer IntlTimeZone-Instanz gegenüber UTC/GMT in Millisekunden zurück. Im Gegensatz zu intltz_get_offset() wird dabei keine Sommerzeitkorrektur (DST) berücksichtigt – es handelt sich ausschließlich um den fest definierten Zeitzonen-Offset.

Diese Funktion ist nützlich, wenn man den unveränderlichen Standardoffset einer Zeitzone ermitteln möchte, unabhängig davon, ob zum aktuellen Zeitpunkt Sommerzeit gilt oder nicht. Typische Anwendungsfälle sind die Anzeige von Zeitzonen-Informationen oder Berechnungen, bei denen DST separat behandelt werden soll.

Die Funktion ist die prozedurale Entsprechung der Methode IntlTimeZone::getRawOffset() und kann alternativ mit der objektorientierten Schnittstelle verwendet werden.

Der Rückgabewert ist ein Integer in Millisekunden. Für die Umrechnung in Stunden dividiert man durch 3600000.

Parameter

Name Typ Default Beschreibung
$timezone Pflicht IntlTimeZone Eine gültige IntlTimeZone-Instanz, deren roher GMT-Offset abgefragt werden soll.

Rückgabewert

Typ
int
Beschreibung
Den rohen GMT-Offset der Zeitzone in Millisekunden ohne Sommerzeitkorrektur. Negative Werte stehen für Zeitzonen westlich von UTC, positive für Zeitzonen östlich von UTC.

Beispiele

Rohen Offset einer Zeitzone ermitteln

<?php
$tz = IntlTimeZone::createTimeZone('Europe/Berlin');
$rawOffset = intltz_get_raw_offset($tz);

// Umrechnung von Millisekunden in Stunden
$stunden = $rawOffset / 3600000;

echo "Roher GMT-Offset für Europe/Berlin: " . $rawOffset . " ms\n";
echo "Das entspricht: " . $stunden . " Stunden\n";
Roher GMT-Offset für Europe/Berlin: 3600000 ms Das entspricht: 1 Stunden

Vergleich von rohem Offset und aktuellem Offset (inkl. DST)

<?php
$tz = IntlTimeZone::createTimeZone('America/New_York');

$rawOffset = intltz_get_raw_offset($tz);

// Aktuellen Offset inkl. DST ermitteln
$jetzt = (int)(microtime(true) * 1000);
$rawSave = 0;
$dstSave = 0;
$tz->getOffset($jetzt, false, $rawSave, $dstSave);

echo "Roher Offset (ohne DST): " . ($rawOffset / 3600000) . " Stunden\n";
echo "Aktueller Offset (mit DST): " . (($rawSave + $dstSave) / 3600000) . " Stunden\n";
echo "DST-Anteil: " . ($dstSave / 3600000) . " Stunden\n";
Roher Offset (ohne DST): -5 Stunden Aktueller Offset (mit DST): -4 Stunden DST-Anteil: 1 Stunden

// Wichtig · Fallstricke

Hinweis zur Einheit: Der Rückgabewert ist in Millisekunden, nicht in Sekunden oder Stunden. Eine Verwechslung kann zu falschen Berechnungen führen – zur Umrechnung in Sekunden durch 1000, in Stunden durch 3600000 dividieren.

DST-Unterschied: Diese Funktion berücksichtigt keine Sommerzeit. Wenn der tatsächliche Offset zu einem bestimmten Zeitpunkt benötigt wird, sollte stattdessen IntlTimeZone::getOffset() bzw. intltz_get_offset() verwendet werden.

Die Funktion setzt die ICU-Bibliothek voraus. Bei sehr alten PHP-Installationen ohne die intl-Erweiterung ist sie nicht verfügbar.