Для того щоб отримати масив списку всіх таймзон із різницею у часі відносно Гринвіча, використовуйте наступну функцію:
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);
