Ну для начала пользователь из Владивостока должен как-то сообщить серверу о своей зоне (например, выставив ее в настройках своего профиля).
Далее, PHP должно распарсить строку с датой (например, с помощью
DateTime::createFromFormat), причем использовать зону, настроенную пользователем. Полученную дату (объект DateTime) можно вывести пользователю дату/время в любой временной зоне, сделав DateTime::setTimezone() и DateTime::format().
БД работает похожим образом: если используется тип TIMESTAMP WITH TIMEZONE, то физически в колонке хранится время в UTC. Клиент (в данном случае приложение PHP) при подключении к БД задает желаемую зону (или не задает, тогда используется зона по умолчанию из настроек сервера БД). В этой зоне клиенту выдаются даты. При желании поле с меткой времени можно перевести в другую зону через констукцию
datetime_value AT TIME ZONE zone.
По идее, БД и PHP у вас используют одну, общую для сервера, зону, и менять это обычно смысла нет. Ваша задача - правильно распарсить даты, присылаемые пользователем (подставив его предпочитаемую зону), а также выводить даты пользователю в его зоне. Проще всего один раз выставить эту зону через
date_default_timezone_set()