Как справиться с отображением даты и времени, когда пользователи находятся в разных часовых поясах? - PullRequest
1 голос
/ 11 марта 2011

Я создаю сайт типа социальной сети. Веб-сайт работает хорошо в отношении трафика и т. Д. Я столкнулся с проблемой, когда есть прямая новостная лента о статусах людей и взаимодействиях. Когда я публикую что-то отсюда (Atlanta GA), говорится, что это было опубликовано менее 1 минуты назад. Людям в Австралии написано, что это было опубликовано 16 часов назад.

Я использую настройку LAMP с php 5. Что касается плагина JQuery, я использую timeago, чтобы придать аббревиатуре красивый вид.

Я не уверен, нужно ли мне устанавливать часовой пояс PHP для пользователей в зависимости от их местоположения или часовой пояс БД в зависимости от их местоположения.

Ответы [ 2 ]

5 голосов
/ 11 марта 2011

Я хотел бы, чтобы все даты были сохранены во что-то вроде UTC и делали сравнения, основываясь на этом.Если вам нужно отобразить дату, просто преобразуйте ее из UTC во временную зону, в которой находится конкретный пользователь (либо на вашем сервере, либо через JS).

0 голосов
/ 25 марта 2011

Плагин timeago ожидает ввода времени UTC или локального времени браузера.Вы, вероятно, указываете время по местному времени, помеченному как UTC.Вот пример, предполагающий местное время 9:25:

<script language="javascript">
jQuery(document).ready(function() {jQuery("abbr.timeago").timeago();});
</script>

Correct UTC: <abbr class="timeago" title="2011-03-25T13:25:00Z">March 25, 2011</abbr>
Correct Local: <abbr class="timeago" title="2011-03-25T09:25:00">March 25, 2011</abbr>
Wrong (local time marked as UTC)<abbr class="timeago" title="2011-03-25T09:25:00Z">March 25, 2011</abbr>

Не беспокойтесь об изменении часового пояса БД или PHP.Сделайте это в Javascript.Выясните, преобразована ли временная строка, которую PHP отправляет в браузер, в UTC.Если это так, добавьте суффикс 'Z' к временной шкале, прежде чем вызывать timeago.Если это не UTC, удалите суффикс «Z».Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...