Я работаю над приложением (используя среду Spring), в котором текущее время сохраняется в БД при каждом добавлении новых записей.
Таким образом, когда эти записи показываются пользователю во внешнем интерфейсе, показанное время соответствует часовому поясу сервера, а не клиенту. Поскольку приложение предназначено для глобальной аудитории, пользователи могут запутаться, если увидят только что добавленную запись с другим временем.
Я предполагаю, что с этой проблемой должны столкнуться все приложения, пользователи которых расположены по всему миру.
Как лучше всего решить эту проблему?
После нескольких поисков и прочтения нескольких ответов на SO я рассматриваю два варианта:
1) Получение часового пояса пользователя с использованием javascript или с адреса ip и сохранение его в БД вместо времени сервера.
2) Отображение пользователя, время относительно текущего времени для недавно добавленных записей (например, added 2 mins ago
до added 1 day ago
, а для более ранних записей - фактическая дата.
Не учитывая первый, так как я считаю, что это приведет к несоответствию между первичным ключом и столбцом created at
в таблицах. В настоящее время не может быть вредным, поскольку пользователи видят только свои собственные записи, но могут привести к путанице, если записи друг друга будут показаны им в будущем.
Второй способ выглядит хорошо для меня. На самом деле, я вижу подобные вещи в SO (например, в новейших вопросах показано относительное время и избранные вопросы, которые добавляются несколько дней назад, показывают «фактические» дату и время), но не уверен, что здесь решается та же проблема.
Хотелось бы узнать любые другие подходы.