Ver Mensaje Individual
  #1 (permalink)  
Antiguo 01/01/2009, 17:16
gilitos92
 
Fecha de Ingreso: diciembre-2008
Mensajes: 70
Antigüedad: 16 años, 2 meses
Puntos: 4
Reloj con zona horaria dinamica en base a base de datos

Hola amigos foristas

Mi problema es el siguiente, tengo una base de datos mysql de la cual saco datos con PHP, y uno de ellos es la zona horaria de el usuario, ahora, tengo un reloj javascript que me calcula el tiempo en horario GMT ó UTC o Zulu (como le quieran llamar, es lo mismo), el codigo de ese reloj es el siguiente:
Código:
<script type="text/javascript">
 function gmtClock(){
    time = new Date()
    gmtMS = time.getTime() + (time.getTimezoneOffset() * 60000)
    gmtTime =  new Date(gmtMS)
    hour = gmtTime.getHours()
    minute = gmtTime.getMinutes()
    second = gmtTime.getSeconds()
    temp = "" + ((hour < 10) ? "0" : "") + hour
    temp += ((minute < 10) ? ":0" : ":") + minute
    temp += ((second < 10) ? ":0" : ":") + second
    document.clockForm.digits.value = temp + " GMT"
    setTimeout("gmtClock()",1000)
    }  
</script>
Esto funciona perfectamente, solamente que quiero que cuando el usuario este loggeado se cambie la zona horaria de GMT a la zona horaria que este en la base de datos, ya que, el usuario puede cambiar esa zona horaria y por lo tanto la zona horaria podria ser diferente entre la base de datos y la de el cliente, por tanto no me serviria sacar el reloj con la zona del cliente.

El php se encarga de verificar si el usuario esta loggeado o no y cambia entre el script anterior a el script que no me funciona, que es el que necesito que cambie con la zona horaria, para no hacerlos bolas les pongo el codigo completo:
Código PHP:
<?php
if($session->loggeado){
?>
<script type="text/javascript">
 function gmtClock(){
     horar = <?php echo $session->infoUsuario['horario'] * 60?>;
    time = new Date()
    gmtMS = time.getTime() + (horar * 60000)
    gmtTime =  new Date(gmtMS)
    hour = gmtTime.getHours()
    minute = gmtTime.getMinutes()
    second = gmtTime.getSeconds()
    temp = "" + ((hour < 10) ? "0" : "") + hour
    temp += ((minute < 10) ? ":0" : ":") + minute
    temp += ((second < 10) ? ":0" : ":") + second
    document.clockForm.digits.value = temp + " GMT " + <?php echo $session->infoUsuario['horario']; ?>;
    setTimeout("gmtClock()",1000)
    }  
</script>
<?php
}
else{
?>
<script type="text/javascript">
 function gmtClock(){
    time = new Date()
    gmtMS = time.getTime() + (time.getTimezoneOffset() * 60000)
    gmtTime =  new Date(gmtMS)
    hour = gmtTime.getHours()
    minute = gmtTime.getMinutes()
    second = gmtTime.getSeconds()
    temp = "" + ((hour < 10) ? "0" : "") + hour
    temp += ((minute < 10) ? ":0" : ":") + minute
    temp += ((second < 10) ? ":0" : ":") + second
    document.clockForm.digits.value = temp + " GMT"
    setTimeout("gmtClock()",1000)
    }  
</script>
<?php
}
?>
El problema aqui es que no me da la hora de la zona horaria, el formato de la zona horaria en la base de datos es Ej. -6, es decir cuenta ya con el signo mas(+) o menos(-) pero a la hora de llegar a la linea en la que se debe de mostrar lo muestra como string y por tanto no es como si cambiara el signo. (Ejemplo. La zona horaria es -6, la variable horar es -6, al llegar a la linea "gmtMS = time.getTime() + (horar * 60000)" no esta contando el signo (+) ó (-) y lo esta haciendo como si fuera positivo :S) y si esa linea estuviera de la siguiente manera "gmtMS = time.getTime() -6 * 60000)" tampoco funciona, y deberia de... no?

Porfavor ayudenme llevo dias rompiendome la cabeza por solucionar esto y nadamas no encuentro nada en internet.

Gracias y Saludos