Как автоматически определять часовой пояс пользователя?

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

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

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

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

Заранее спасибо 🙂

Использовать javascript решение

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

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

http://onlineaspect.com/examples/timezone/index.html (Dead link)

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

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

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

Для геолокации вы можете использовать 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; } 

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

Например, вы можете использовать эту библиотеку 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- Сохраните колонку отметки времени, которую вы используете для собственного использования.
2- Добавить новый столбец для часового пояса фактических пользователей
3- Используйте javascript для извлечения часового пояса:
new Date().getTimezoneOffset()/60;<br/>
4- Также позволяют пользователям устанавливать собственный часовой пояс

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