Как основные сайты определяют часовой пояс?

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.