Sitego, посмотри на этот пример :
* (+/-)
// Тут запросом из базы ты достал значение Europe/Berlin,
// которое к примеру лежит в массиве $row['tz']
// тогда просто подставь его в массив $users_time_zones, и получишь на выходе нужное смещение :
// Для демонстрации принципа явно присвоим в массив временнУю зону юзера
$row['tz'] = 'Europe/Berlin';
// Допиши в массив недостающие временные зоны
$users_time_zones = [
'Europe/Moscow' => 3,
'Europe/London' => 0,
'Europe/Berlin' => -1
];
echo $users_time_zones[$row['tz']]; // Вернёт -1Добавлено: 02.10.2017 / 19:46
Вариант с массивом пожалуй не вариант, гг, т.к. надо для всех таймзон писать огромный массив (или просто написать парсер таймзон из мануала) ... Я тут по-гуглил, и на основе просмотренного набросал такой вариант
* (+/-)
<?php
date_default_timezone_set('UTC');
$timezone = 'Europe/Berlin';
$offset = timezone_offset_get(timezone_open($timezone), new DateTime);
$offset = ($offset / 3600) - 3;
var_dump($offset);