Ver Mensaje Individual
  #5 (permalink)  
Antiguo 22/02/2012, 23:43
furoya
(Desactivado)
 
Fecha de Ingreso: noviembre-2002
Ubicación: Ciudad Autónoma de Buenos Aires
Mensajes: 2.367
Antigüedad: 21 años, 6 meses
Puntos: 317
Respuesta: Saber uso horario de visitante!

Esto ya lo habíamos hablado varias veces. Y no sé si es PHP o JS. Al menos no estoy muy seguro de lo que buscas. Porque la hora se puede tomar en la configuración de la máquina cliente o por el IP capturado en el servidor.

Para corregir valores de horas tienes que saber la diferencia entre las horas que pones y el UTC, eso lo averiguas por tu cuenta. Luego, como te mencionaron, sacas la hora entre la máquina local de cliente y UTC. Por último, obtienes la diferencia entre las dos, y con eso sabes cuanto corregirle a tus valores para que el visitante a tu página los vea como locales. Porque supongo que eso es lo que quieres hacer.

Ya es muy tarde y hoy tuve un día difícil, pero me entretuve en hacer un demo JS.
Ahora que lo pienso, no sé cómo se comportará en países al este de Greenwich. Tal vez haya que hacerle algún ajuste. Pero son las 2:30 de la mañana y yo me voy a desmayar hasta el mediodía, por lo menos. No me ofendo si lo corrigen ustedes.

Código HTML:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
"http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd">
<html>
<head>
<meta http-equiv=Content-Type content="text/html; charset=utf-8">
<title></title>
<script type="text/javascript">
//alert(Math.abs(-8+(-15)))
function corrigeFuera24(X){
var nvaHora = (X>24) ? 24-X : X;
//alert(X+" "+nvaHora)
return nvaHora; 
/* Esta funcion corrige el cálculo cuando la diferencia entre la hora local 
y la del país de origen sale del rango de "24horas". Al llegar a "24" no sigue 
con "25" sino que recomienza con "1" */
}

var t = new Date();

function hora(){

document.getElementById("nd").innerHTML = t;
document.getElementById("gto").innerHTML = t.getTimezoneOffset();
/* Diferencia local con UTC, en minutos */

document.getElementById("dh").innerHTML = t.getTimezoneOffset() / 60;
/* Divide los minutos por 60 para convertir en horas */

document.getElementById("gh").innerHTML = t.getHours();
/* Hora local */

document.getElementById("gutch").innerHTML = t.getUTCHours();
/* Hora UTC, no se usa, la pongo de referencia */

document.getElementById("d11_gto").innerHTML = (-t.getTimezoneOffset() / 60) - (-11);
/* Diferencia entre país de origen y país local, en horas. "-11" es la diferencia que ya
conocemos del país de origen en medio del Pacífico a UTC. */

document.getElementById("dmp_gto").innerHTML = 
Math.abs( corrigeFuera24( 21 + ((-t.getTimezoneOffset() / 60) - (-11)) ) );
/* Hora corregida. El valor absoluto se usa para quitar el signo "-" que le deja la 
función */

}

onload = hora;
</script>
<style type="text/css">
span {background: yellow;}
code {background: silver; font-weight: bold;}
u {cursor: help}

</style>
</head>
<body>

<h2>En mi país las <u title="UTC -11 horas, en medio del Pacífico.">9 p.m.</u> (21 
<sub>[24h]</sub>) son las <span id=dmp_gto></span> de tu país.</h2>

<p>cadena de <code>new Date()</code> = <span id=nd> </span></p>
<p>cadena de <code>getTimezoneOffset()</code> = <span id=gto> </span></p>
<p><code>getTimezoneOffset()</code> en horas (el valor se toma como negativo al oeste) = <span id=dh> </span></p>
<p><code>t.getHours()</code> hora local (24h) = <span id=gh> </span></p>
<p><code>getUTCHours()</code> en horas = <span id=gutch> </span></p>
<p>Diferencia entre nuestros países → (-<code>getTimezoneOffset()</code>) - (-11)  = <span id=d11_gto> </span></p>

</body>
</html> 
Reloj con mismo horario para todos

Como colocar la Hora en la pagina pero no del komputador si no la de pais