Как автоматически определять часовой пояс пользователя?
Привет, я создаю веб-приложение, где, если пользовательский регистр, мы покажем созданную дату.
Для этого мы используем текущую метку времени в моей таблице sql.Which показывает время сервера. Но мы не знаем, как конвертировать Time в соответствии с часовым поясом пользователя.
Потому что мы не получаем пользовательскую страну.
Может ли кто-нибудь помочь мне исправить его
Заранее спасибо:)
Ответы
Ответ 1
Используйте javascript-решение
http://www.onlineaspect.com/2007/06/08/auto-detect-a-time-zone-with-javascript/
Демонстрация должна показывать ваш часовой пояс в окне выбора.
http://onlineaspect.com/examples/timezone/index.html (Dead link)
Ответ 2
Вы не можете получить часовой пояс пользователя на стороне сервера, и вы можете только угадать его на стороне клиента.
Если вы полагаетесь на получение IP-адреса пользователя, вы можете его геолокацию и вывести время.
Обычно это делается путем запроса пользователя (когда они регистрируются, например), в какой временной зоне они находятся, а затем использовать это в своих расчетах времени.
Ответ 3
Для геолокации вы можете использовать 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;
}
Ответ 4
С небольшим "обманом" (используя скрипты на стороне клиента) и отправкой результата на ваш сервер вы можете получить доступ к часовому поясу вашего клиента.
Например, вы можете использовать эту библиотеку 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/
Ответ 5
Самый надежный метод - попросить пользователя установить свой часовой пояс. Я считаю хорошей идеей иметь временную метку, когда учетная запись пользователя была создана в вашей собственной базе данных для вашего собственного использования.
Это шаги, которые я предприму, чтобы иметь часовой пояс для пользователей:
1- Сохраните столбец временной метки, который у вас есть для вашего собственного использования
2- Добавить новый столбец для часового пояса фактических пользователей
3- Используйте javascript для извлечения часового пояса:
new Date().getTimezoneOffset()/60;<br/>
4- Также разрешить пользователям также устанавливать собственный часовой пояс
Вы также можете сделать еще один шаг и использовать службу геолокации для обнаружения часового пояса пользователей.