Как автоматически определить часовой пояс пользователя? - PullRequest
14 голосов
/ 05 марта 2011

Привет, я создаю веб-приложение, в котором, если пользователь зарегистрируется, мы покажем дату создания.

Для этого мы используем метку времени в моей таблице sql. Который показывает время сервера. Но мы нене знаю, как конвертировать время в соответствии с часовым поясом пользователя.

Поскольку мы не получаем страну пользователя .

Может кто-нибудь помочь мне исправить это

Заранее спасибо:)

Ответы [ 5 ]

23 голосов
/ 03 ноября 2011

Используйте решение javascript

http://www.onlineaspect.com/2007/06/08/auto-detect-a-time-zone-with-javascript/

Демо должно отображать ваш часовой пояс в окне выбора.

http://onlineaspect.com/examples/timezone/index.html (Мертвая ссылка)

8 голосов
/ 05 марта 2011

Вы не можете получить часовой пояс пользователя на стороне сервера, и вы можете только догадываться о нем на стороне клиента.

Если вы полагаетесь на получение IP-адреса пользователя, вы можете определить его местоположение и определить время.

Обычно это делается путем запроса у пользователя (например, когда он регистрируется), в каком часовом поясе он находится, а затем использует это в своих расчетах времени.

4 голосов
/ 05 марта 2011

Для геолокации вы можете использовать http://ipinfodb.com/, отлично работать с API!

function GeoLocation($precision='city',$ip,$api) {

    if($precision == "country") {
        $file = "ip_query_country.php";
    }
    else {
        $file = "ip_query.php";
    }

    $params = @file_get_contents("http://api.ipinfodb.com/v2/ip_query.php?key=".$api."&ip=".$ip."&timezone=true");
    $fields = @new SimpleXMLElement($params);
    foreach($fields as $field => $val) {
        $result[(string)$field] = (string)$val;
    }
    return $result;
}
2 голосов
/ 03 апреля 2014

С помощью небольшого "мошенничества" (с использованием сценариев на стороне клиента) и публикации результатов на сервере вы можете получить доступ к часовому поясу вашего клиента.

Например, вы можете использовать эту библиотеку JavaScript:

https://bitbucket.org/pellepim/jstimezonedetect

var tz = jstz.determine(); // Determines the time zone of the browser client
tz.name(); // Returns the name of the time zone eg "Europe/Berlin"

Демо: http://pellepim.bitbucket.org/jstz/

1 голос
/ 05 марта 2011

Самый надежный метод - попросить пользователя установить свой часовой пояс.Я думаю, что было бы неплохо иметь временную метку, когда учетная запись пользователя была создана в вашей собственной базе данных для вашего собственного использования.

Вот шаги, которые я бы предпринял, чтобы иметь часовой пояс пользователя:

1- Сохраните столбец метки времени, который у вас есть для собственного использования2- Добавить новый столбец для часового пояса реальных пользователей3- Используйте JavaScript для получения часового пояса:new Date().getTimezoneOffset()/60;<br/>4- Также разрешите пользователям устанавливать собственный часовой пояс

Вы также можете сделать еще один шаг и использовать службу геолокации для определения часового пояса пользователей.

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