Как правильно реализовать перевод времени для каждого пользователя symfony

Задача состоит в том, чтобы в symfony проекте для каждого пользователя переводить время из базы данных в локальное время пользователя.

У меня есть несколько вариантов:

  1. Хранить время в БД с doctrine типом datetime, все время в UTC. В контроллере получать ip пользователя через Request, считывать какому часовому поясу принадлежит ip адрес через сайт, передавать это значение в twig и выводить дату с помощью фильтра date и переменной timezone, которую только что получили. В коде выглядит так:
// Controller
$user_timezone = file_get_contents("https://ipapi.co/{$request->getClientIp()}/timezone");
$user_timezone = $user_timezone === 'Undefined' ? 'UTC' : $user_timezone;
{# View #}
{{ some_date_var|date("d.m.Y h:i", user_timezone) }}
  1. Тоже хранить время в БД с doctrine типом datetime, все время в UTC. В twig делать проверку на наличие переменной timezone в куках. Если нет, то добавлять js скрипт, который будет доставать часовой пояс пользователя через Intl.DateTimeFormat().resolvedOptions().timeZone и или отправлять ajax на какую-то страницу, или перенаправлять на нее, там сохранять timezone в куках, ставить default timezone для twig и перезагружать страницу или возвращать обратно (в зависимости от ajax или перенаправления).

Я не сохраняю timezone пользователя в БД потому что считаю, что будет неудобно переезжать из одной страны в другую. Например ты приехал на отдых в другую страну, телефон перестроил время, поэтому надо и перестраивать время на сайте. Или же вдруг пользователь зарегистрируется не в своей стране.

В общем, можно ли использовать какой-то из этих вариантов или есть что-то проще, быстрее, надежнее?


Ответы (0 шт):