Как указывает Джимми, вы можете использовать переходы часовых поясов, но это не доступно в PHP <5.3. так как dateTimeZone () - это PHP> = 5.2.2, а getTransitions () с аргументами - нет! В этом случае здесь есть функция, которая может предоставить вам данные часового пояса, в том числе в летнее время или нет.
function timezonez($timezone = 'Europe/London'){
$tz = new DateTimeZone($timezone);
$transitions = $tz->getTransitions();
if (is_array($transitions)){
foreach ($transitions as $k => $t){
// look for current year
if (substr($t['time'],0,4) == date('Y')){
$trans = $t;
break;
}
}
}
return (isset($trans)) ? $trans : false;
}
Сказав это, есть более простой метод, использующий функцию date (), если вам просто нужно знать, находится ли часовой пояс в летнее время. Например, если вы хотите знать, находится ли Великобритания в DST, вы можете сделать это:
date_default_timezone_set('Europe/London');
$bool = date('I'); // this will be 1 in DST or else 0
... или укажите временную метку в качестве второго аргумента date (), если вы хотите указать дату и время, отличное от текущего времени сервера.