2011-10-08 8 views
16

Facebook, myspace, MSN, craigslist; todos detectan la zona horaria y muestran las horas y fechas correctamente sin enviar un formulario o volver a cargar una página.¿Cómo son los sitios principales que detectan la zona horaria?

¿Cómo lo hacen? Tengo un sitio bastante grande y tengo personas publicando artículos que deben mostrar los horarios correctos (3pm o 6pm cargados dependiendo de la zona horaria).

¿Preloaders? Javascript? ¿Cargando la página y volviendo a cargarla? Mi sitio actualmente tiene a la persona ingresando al sitio y luego de la primera entrada recarga la página con información actualizada de su zona horaria a través de javascript. Sin embargo, esto es bastante molesto y estoy buscando otra alternativa. Sé que al momento de cargarlo puedo enviar una solicitud de Ajax y luego hacer que actualice todo el sitio con la zona horaria correcta para el usuario PERO si tengo que volver a hacer clic, o volver a cargarlo, me pregunta si me gustaría volver a enviar la información. que también es malo Entonces cómo lo hacen?

Estaba jugando con Facebook, cambiando mi ubicación en mi máquina local y parecía actualizar la zona horaria cada 5 minutos más o menos.

Estoy basado en php, zend-framework.

+0

ver mi respuesta, es un poco más preciso. :) – pckabeer

Respuesta

16

no hay ningún encabezado de la solicitud "zona horaria", o algo por el estilo, por lo que, no se puede con php

pero con javascript puede obtener el desplazamiento de la zona horaria del cliente, entonces se podría hacer una petición xmlhttp para enviar información a PHP

ver esto: http://www.pageloom.com/automatic-timezone-detection-with-javascript

¡bastante fácil!

esperanza esto ayuda

+1

@AdamSack sitios principales detectan zonas horarias por información de usuarios registrados, tienen su propia base de datos geoip.en más darius dijo que al cambiar el tiempo en su computadora, el cambio se detecta, por lo que definitivamente usan javascript. –

+0

Estoy de acuerdo con @AdamSack aún +1 para el Javascript;) –

+1

El desplazamiento de la zona horaria no es constante, cambia con el horario de verano, por lo que puede ser ambiguo qué zona horaria utiliza un cliente. Una combinación de IP, js zona horaria offset y js configuración regional debería dar mejores resultados (necesita una base de datos que combina todo esto de alguna manera). –

4

Puede encontrar el país de usuario using IP address geocoding y luego tener alguna matriz con zonas horarias para cada país. Creo que no hay otras formas. Puede buscar el país usuario así:

<?php 
$file = file_get_contents("http://api.hostip.info/get_html.php?ip=".$_SERVER['REMOTE_ADDR'].""); 
?> 

Entonces sólo tiene que utilizar para la explode$file.

Busque también estos códigos Stackoverflow:
How can I determine a web user's time zone?
Any Reliable API available to determine User's city and country from IP address

3

Creo que utilizan direccionamiento IP y Geo-localización. Eso es todo al respecto.

+0

no, la solicitud js ajax también es buena opción –

1

Prueba este código php esto da una mejor precisión

<?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];?> 
+0

¿Por qué un voto abajo asoma? Veo dos inconvenientes, usar IP puede dar la zona horaria incorrecta si los servidores del proveedor están en otra zona horaria, y usar un sitio exterior no es bueno ya que no queremos ser dependientes. Gracias por la entrada, aunque – Darius

+0

No voté menos, pero creo que los dos motivos que enumera son razones bastante convincentes para no utilizarlo – sricks

1

jsTimezoneDetect proporciona una gran biblioteca para la detección automática de zona horaria a través de JavaScript.

Cuestiones relacionadas