Как основные сайты определяют часовой пояс?
Facebook, myspace, MSN, craigslist; все определяют часовой пояс, время показа и даты правильно, не отправляя форму или не перегружая страницу.
Как они это делают? У меня довольно большой сайт, и у людей есть публикация статей, которые должны отображать правильные времена (загруженные 3 часа или 6 вечера в зависимости от часового пояса).
Preloaders? Javascript? Загрузка страницы и ее перезагрузка? На моем сайте в настоящее время человек входит на сайт, и при первом входе он перезагружает страницу обновленной информацией о своем часовом поясе через javascript. Это, однако, довольно раздражающая вещь, и я ищу другую альтернативу. Я знаю, что при загрузке я могу отправить запрос ajax, а затем обновить все по всему сайту с правильным часовым поясом для пользователя. НО, если мне нужно щелкнуть обратно или перезагрузить, он спрашивает, хочу ли я снова отправить информацию что тоже плохо. Итак, как они это делают?
Я играл с Facebook, меняя свое местоположение на своей локальной машине и, похоже, обновлял часовой пояс каждые 5 минут или около того.
Я php, основанный на zend-framework.
Ответы
Ответ 1
нет заголовка запроса "часовой пояс" или что-то в этом роде, поэтому вы не можете с php
но с javascript вы можете получить смещение часового пояса клиента, тогда вы можете сделать запрос xmlhttp для отправки информации на php
см. это: http://www.pageloom.com/automatic-timezone-detection-with-javascript
довольно легко!
надеюсь, что это поможет
Ответ 2
Вы можете найти пользовательскую страну с использованием геокодирования IP-адресов, а затем иметь некоторый массив с часовыми поясами для каждой страны. Я думаю, что нет других путей.
Вы можете выбрать страну пользователя следующим образом:
<?php
$file = file_get_contents("http://api.hostip.info/get_html.php?ip=".$_SERVER['REMOTE_ADDR']."");
?>
Затем просто используйте explode
для $file
.
Посмотрите также эти коды стоп-кодов:
Как определить часовой пояс веб-пользователя?
Любой надежный API, доступный для определения города и страны пользователя с IP-адреса
Ответ 3
Я считаю, что они используют IP-адресацию и географическое местоположение. Это все, что нужно.
Ответ 4
Прежде всего, вы должны работать с UTC на всех уровнях, и если вы не знаете часовой пояс, отметьте время как таковое. Затем на локальном клиенте вы можете настроить время с помощью timezoneOffset
https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Date/getTimezoneOffset
Ответ 5
Попробуйте этот php-код, это дает лучшую точность
<?php $ip = $_SERVER['REMOTE_ADDR'];
$json = file_get_contents("http://api.easyjquery.com/ips/?ip=".$ip."&full=true");
$json = json_decode($json,true);
$timezone = $json[localTimeZone];?>
Ответ 6
jsTimezoneDetect предоставляет отличную библиотеку для автоматического обнаружения часового пояса через javascript.