Signatur
Beschreibung
intltz_get_dst_savings() ist die prozedurale Variante der Methode IntlTimeZone::getDSTSavings() und liefert den Sommerzeit-Offset einer Zeitzone in Millisekunden. Dieser Wert gibt an, um wie viele Millisekunden die Uhrzeit während der Sommerzeit gegenüber der Normalzeit vorgestellt wird – typischerweise 3 600 000 ms (= 1 Stunde).
Die Funktion ist nützlich, wenn man programmatisch prüfen möchte, ob eine Zeitzone überhaupt Sommerzeit kennt und wie groß die Abweichung ist. Zeitzonen ohne Sommerzeitumstellung (z. B. UTC oder Asia/Tokyo) liefern den Wert 0.
Zu beachten ist, dass der Rückgabewert in Millisekunden angegeben wird, nicht in Sekunden oder Minuten. Für die Umrechnung in Stunden muss der Wert durch 3 600 000 geteilt werden.
Diese Funktion gehört zur ICU-basierten Internationalisierungserweiterung (intl) von PHP und ist daher auf Systemen verfügbar, auf denen die intl-Extension aktiviert ist.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $timezone Pflicht | IntlTimeZone | Ein IntlTimeZone-Objekt, dessen Sommerzeitverschiebung abgefragt werden soll. Kann z. B. mit IntlTimeZone::createTimeZone() erzeugt werden. |
Rückgabewert
0 zurückgegeben.Beispiele
DST-Verschiebung für eine europäische Zeitzone abfragen
<?php
$tz = IntlTimeZone::createTimeZone('Europe/Berlin');
$dstSavingsMs = intltz_get_dst_savings($tz);
$dstSavingsHours = $dstSavingsMs / 3600000;
echo "DST-Verschiebung in Millisekunden: " . $dstSavingsMs . PHP_EOL;
echo "DST-Verschiebung in Stunden: " . $dstSavingsHours . PHP_EOL;
Zeitzonen mit und ohne Sommerzeit vergleichen
<?php
$zeitzonen = ['Europe/Berlin', 'UTC', 'America/New_York', 'Asia/Tokyo'];
foreach ($zeitzonen as $tzName) {
$tz = IntlTimeZone::createTimeZone($tzName);
$dst = intltz_get_dst_savings($tz);
$hatDST = $dst > 0 ? 'Ja' : 'Nein';
echo sprintf("%s – DST: %s (Offset: %d ms)\n", $tzName, $hatDST, $dst);
}
// Wichtig · Fallstricke
Achtung: Der Rückgabewert ist immer in Millisekunden. Dies ist ein häufiger Fehler, wenn man ihn direkt mit sekunden-basierten PHP-Zeitfunktionen wie time() kombiniert.
Die Funktion gibt die nominale Sommerzeitverschiebung zurück, also den konfigurierten Wert aus der Zeitzonendatenbank. Sie sagt nicht aus, ob zum aktuellen Zeitpunkt tatsächlich Sommerzeit gilt – dafür sollte man intltz_in_daylight_time() in Kombination mit einem IntlCalendar-Objekt verwenden.
Die intl-Extension muss auf dem Server aktiviert sein. Andernfalls führt der Aufruf zu einem schwerwiegenden Fehler (Fatal error).