zona mexico horaria establecer colombia argentina php javascript timezone

php - mexico - obtener la zona horaria del usuario



zona horaria colombia php (3)

Posible duplicado:
¿Cómo puedo determinar la zona horaria de un usuario web?

Cuál es la mejor manera de hacer esto ? php o javascript.¿Puede alguien proporcionarme algunos fragmentos? Gracias.


En el lado del servidor, no será tan preciso como con JavaScript. Mientras tanto, a veces se requiere para resolver dicha tarea. Solo para compartir la posible solución en este caso, escribo esta respuesta.

Si necesita determinar la zona horaria del usuario, puede hacerlo a través de servicios Geo-IP. Algunos de ellos proporcionan zona horaria. Por ejemplo, este ( http://smart-ip.net/geoip-api ) podría ayudar:

<?php $ip = $_SERVER[''REMOTE_ADDR'']; // means we got user''s IP address $json = file_get_contents( ''http://smart-ip.net/geoip-json/'' . $ip); // this one service we gonna use to obtain timezone by IP // maybe it''s good to add some checks (if/else you''ve got an answer and if json could be decoded, etc.) $ipData = json_decode( $json, true); if ($ipData[''timezone'']) { $tz = new DateTimeZone( $ipData[''timezone'']); $now = new DateTime( ''now'', $tz); // DateTime object corellated to user''s timezone } else { // we can''t determine a timezone - do something else... }


Esto te dará la zona horaria como una variable de PHP. Escribí una función usando jQuery y PHP. ¡Esto se prueba y funciona!

En la página de PHP donde desea tener la zona horaria como una variable, tenga este fragmento de código en algún lugar cerca de la parte superior de la página:

<?php session_start(); $timezone = $_SESSION[''time'']; ?>

Esto leerá la variable de sesión "tiempo", que ahora vamos a crear.

En la misma página, en la sección <head> , antes que nada debes incluir jQuery:

<script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script>

También en la sección <head> , pegue este jQuery:

<script type="text/javascript"> $(document).ready(function() { if("<?php echo $timezone; ?>".length==0){ var visitortime = new Date(); var visitortimezone = "GMT " + -visitortime.getTimezoneOffset()/60; $.ajax({ type: "GET", url: "http://domain.com/timezone.php", data: ''time=''+ visitortimezone, success: function(){ location.reload(); } }); } }); </script>

Puede haberlo notado o no, pero debe cambiar la URL a su dominio real.

Una última cosa. Probablemente se esté preguntando qué diablos es timezone.php. Bueno, es simplemente esto: (crea un nuevo archivo llamado timezone.php y apunta a él con la URL anterior)

<?php session_start(); $_SESSION[''time''] = $_GET[''time'']; ?>

Si esto funciona correctamente, primero cargará la página, ejecutará JavaScript y volverá a cargar la página. ¡Entonces podrá leer la variable $ zonezone y usarla para su gusto! Devuelve el desplazamiento de zona horaria UTC / GMT actual (GMT -7) o la zona horaria en la que se encuentre.

Puedes leer más sobre esto en mi blog

Aclamaciones

</Westy92>


Justo como Oded ha respondido. Necesita tener este tipo de funcionalidad de detección en javascript.

He luchado con esto y me di cuenta de que la compensación no es suficiente. No le da ninguna información sobre el horario de verano, por ejemplo. Terminé escribiendo un código para mapear las claves de la base de datos de zoneinfo.

Al consultar varias fechas alrededor de un año, puede determinar con mayor precisión una zona horaria.

Pruebe el guión aquí: http://jsfiddle.net/pellepim/CsNcf/

Simplemente cambie la zona horaria de su sistema y haga clic en ejecutar para probarlo. Sin embargo, si está ejecutando Chrome, debe realizar cada prueba en una nueva pestaña (y safar debe reiniciarse para detectar cambios en la zona horaria).

Si desea obtener más información sobre el código, visite: https://bitbucket.org/pellepim/jstimezonedetect/