Местное время пользователей PHP

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

Solutions Collecting From Web of "Местное время пользователей PHP"

Существует два хороших решения:

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

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

Единственное, что должно помешать вам использовать 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.

IMHO, время клиента w / timezone должно было стать отраслевым стандартным заголовком запроса.

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

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

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

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

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

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