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