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