PHP пользователи по местному времени - PullRequest
1 голос
/ 22 января 2011

Эй, Стефренд = P Я знаю о функциях времени () и даты (), но я хочу добиться того, чтобы пользователь из Китая показывал другое время, чем пользователь из Франции. Я не могу использовать JavaScript, потому что я также использую местное время для некоторых вычислений.

Ответы [ 4 ]

3 голосов
/ 23 января 2011

Единственное, что должно помешать вам использовать javascript, это если а) вы просто обслуживаете API и не контролируете содержимое страницы; или b) клиент все равно заблокировал JavaScript. С помощью javascript это самый надежный метод, если не считать простого запроса пользователя ввести свой часовой пояс.

Cookies или Ajax будут работать. Для облегчения использования файлов cookie, поместите этот javascript в раздел заголовка на любой странице, чтобы добавить файл cookie ...

<script>

d = new Date; 
gmtoffset = d.getTimezoneOffset() / 60;
document.cookie = 'gmtoffset=' + gmtoffset;

</script>

Затем в ваших PHP-скриптах прочитайте $_COOKIE['gmtoffset'], чтобы узнать их часовой пояс относительно GMT.

ИМХО, время клиента с часовым поясом должно было быть стандартным для отрасли заголовком запроса.

Редактировать: убрал дату истечения срока действия из примера cookie, так как это может вызвать проблемы после 1 января 2012 года.

1 голос
/ 23 января 2011

Есть два хороших решения:

  • Спросите пользователя о его часовом поясе;предварительно выберите значение по умолчанию на основе часового пояса, из которого пришло большинство ваших пользователей, и / или местного часового пояса, обнаруженного с помощью JavaScript
  • Просто используйте UTC (GMT) на своем веб-сайте.

Очевидно, что от вашего сайта зависит, какой вариант подходит.На таком сайте, как stackoverflow, используется опция 2, которая наиболее эффективна, поскольку существуют различные события, которые основаны на днях, поэтому дни должны меняться одновременно для всех пользователей.

0 голосов
/ 22 января 2011

Хотя мне никогда не приходилось его использовать, похоже, есть некоторые функции, позволяющие вам установить часовой пояс, и другие функции даты, чтобы сообщить вам разницу между текущим значением часового пояса и временем по Гринвичу. Это может вам помочь.

http://php.net/manual/en/datetime.settimezone.php

http://php.net/manual/en/function.date.php

0 голосов
/ 22 января 2011

Один из способов - использовать что-то вроде базы данных IP to City от MaxMind - это может дать вам часовой пояс для IP-адреса пользователя.

Либо просто спросите пользователя, какой часовой пояс он предпочитает, и запомните его в файле cookie или в переменной сеанса.

...