Start · Sprachen · PHP · Referenz · intltz_use_daylight_time

intltz_use_daylight_time

Funktion

Prüft, ob eine <code>IntlTimeZone</code>-Instanz Sommerzeit (Daylight Saving Time) verwendet.

seit PHP 5.5.0 Kategorie: string

Signatur

intltz_use_daylight_time(IntlTimeZone $timezone): bool

Beschreibung

intltz_use_daylight_time() ist die prozedurale Variante der Methode IntlTimeZone::useDaylightTime() und gibt zurück, ob die übergebene Zeitzone Sommerzeit (DST, Daylight Saving Time) berücksichtigt. Dies ist nützlich, wenn Anwendungen entscheiden müssen, ob eine Zeitzone überhaupt Uhrzeitumstellungen kennt.

Zeitzonen wie UTC oder Asia/Tokyo verwenden keine Sommerzeit und geben daher false zurück. Zeitzonen wie Europe/Berlin oder America/New_York hingegen kennen Sommerzeitumstellungen und geben true zurück.

Die Funktion macht keine Aussage darüber, ob aktuell Sommerzeit gilt – sie gibt lediglich an, ob die Zeitzone grundsätzlich Sommerzeit kennt. Um zu prüfen, ob zum aktuellen Zeitpunkt Sommerzeit aktiv ist, sollte IntlTimeZone::inDaylightTime() über ein IntlCalendar-Objekt verwendet werden.

Die Funktion ist Teil der ICU-Zeitzonen-API (Internationalization Components for Unicode) und eignet sich besonders für internationalisierte Anwendungen, die mit mehreren Zeitzonen umgehen müssen.

Parameter

Name Typ Default Beschreibung
$timezone Pflicht IntlTimeZone Eine gültige IntlTimeZone-Instanz, z. B. erzeugt durch IntlTimeZone::createTimeZone('Europe/Berlin').

Rückgabewert

Typ
bool
Beschreibung
Gibt true zurück, wenn die Zeitzone Sommerzeit verwendet, andernfalls false.

Beispiele

Prüfung verschiedener Zeitzonen auf Sommerzeitunterstützung

<?php
$tzBerlin  = IntlTimeZone::createTimeZone('Europe/Berlin');
$tzUtc     = IntlTimeZone::createTimeZone('UTC');
$tzTokyo   = IntlTimeZone::createTimeZone('Asia/Tokyo');
$tzNewYork = IntlTimeZone::createTimeZone('America/New_York');

var_dump(intltz_use_daylight_time($tzBerlin));  // bool(true)
var_dump(intltz_use_daylight_time($tzUtc));     // bool(false)
var_dump(intltz_use_daylight_time($tzTokyo));   // bool(false)
var_dump(intltz_use_daylight_time($tzNewYork)); // bool(true)
bool(true) bool(false) bool(false) bool(true)

Zeitzonen filtern, die keine Sommerzeit verwenden

<?php
$zoneIds = ['Europe/Berlin', 'UTC', 'Asia/Tokyo', 'America/New_York', 'Pacific/Auckland'];

$withoutDST = array_filter($zoneIds, function (string $id): bool {
    $tz = IntlTimeZone::createTimeZone($id);
    return !intltz_use_daylight_time($tz);
});

echo implode(', ', $withoutDST);
UTC, Asia/Tokyo

// Wichtig · Fallstricke

Achtung: Die Funktion gibt true zurück, wenn die Zeitzone überhaupt Sommerzeit kennt – nicht ob sie gerade jetzt aktiv ist. Für die Prüfung, ob zum aktuellen oder einem bestimmten Zeitpunkt Sommerzeit gilt, muss ein IntlCalendar in Kombination mit IntlCalendar::inDaylightTime() verwendet werden.

Die objektorientierte Variante IntlTimeZone::useDaylightTime() liefert dasselbe Ergebnis und ist in modernem Code oft bevorzugt.