Для того что бы получить массив списка всех тайм зон с временной разницей по Гринвичу, используйте следующую функцию:
function get_time_timezones()
{
$zones_array = array();
$timestamp = time();
$default_timezone = date_default_timezone_get();
$timezone_list = timezone_identifiers_list();
foreach ($timezone_list as $zone)
{
date_default_timezone_set($zone);
$zones_array[$zone] = date('P', $timestamp);
}
date_default_timezone_set($default_timezone);
return $zones_array;
}
Что мы здесь имеем:
$zones_array — наш будущий массив таймзон с метками времени
$timestamp — текущее время в timestamp
$default_timezone — текущая таймзона
$timezone_list — список таймзон
Далее, мы в цикле проходим по списку таймзон устанавливая каждую как текущую для нашего сайта:
foreach ($timezone_list as $zone)
{
date_default_timezone_set($zone);
$zones_array[$zone] = date('P', $timestamp);
}
И используя ф-ю «date()» с параметром «P», определяем разницу времени по гринвичу
Ну а в самом конце, устанавливаем нашу «родную» временную зону:
date_default_timezone_set($default_timezone);
