aulambra.com - Tecnologias de Internet
 
 

Lista de Correo

Para suscribirte a la lista de correo dejanos tu e-mail y preferencias en tecnologías.

Seguir >>

Valid HTML 4.01!
Valid CSS!

Web 2.0

Guardar... Compartir...
EMAIL: PASSWORD:
Darme de alta como usuario | Se me ha olvidado la contraseña

volverserverpages/asp/asp/Reloj con hora del servidor

Reloj en JavaScript con la hora del servidor

Uno de los artículos más leído de la página es la creación de un reloj en javascript. En este ejemplo que podéis leer en /Script/JavaScript/Hora/ se puede ver cómo se obtiene la hora de la máquina cliente donde se ejecuta. (Interesante leerlo antes de afrontar este...)

Me han llegado numerosos emails diciendo cómo hacer esto, pero tomando la hora del servidor. A si que aquí tenéis la respuesta a vuestras dudas. En este caso hemos escogido en lenguaje ASP como lenguaje de servidor, pero no podría valer cualquier otro. Véase PHP, JSP,...

Lo primero que debemos de hacer es recoger la fecha del servidor. En este caso utilizamos la función Now() de ASP para que nos de la fecha actual del servidor.

Lo siguiente será el pasar esa fecha a una rutina javascript. Para ello lo que hacemos es montar la rutina javascript "al vuelo". Es decir, el código de la rutina javascript que se ejecutará en el cliente llevará parte de código de servidor. El servidor antes de devolver la página al cliente tendrá ya una rutina pura y dura javascript.

Veamos como quedaría:

<SCRIPT>

// Recogemos la fecha del servidor.
var fecha = "<%=Now()%>";
// Pasamos la fecha a javascript
var fecha_js = new Date(fecha);

</SCRIPT>

El ejemplo de /Script/JavaScript/Hora/ lo que hacía era poner un Timer que lanzaba cada segundo una función, la cual, solicitaba la fecha actualizada. Si hicieramos eso volveríamos a tener la fecha del cliente y no la del servidor. Es por ello que lo que tendremos que hacer es el control manual de la fecha, es decir, incrementar nosotros mismos la fecha, segundo a segundo.

Para incrementar la fecha lo primero que tenemos que hacer es obtener los segundos, minutos y hora del servidor.

var segundos = fecha_js.getSeconds();
var hora = fecha_js.getHours(); 
var minutos = fecha_js.getMinutes(); 

Y en la función que se ejecute cada segundo (mejor dicho, cada 1000 milésimas) deberemos de seguir el siguiente algoritmo:

segundos++;
   
if (segundos == 60) {
  segundos = 0;
  minutos++;
  if (minutos == 60) {
    minutos = 0;
    hora++;
    if (hora == 24) {
      hora = 0;
    }
  }
}

Es sencillo. Si llegamos a 60 segundos es que ha pasado un minuto. Incrementamos el minuto y ponemos el segundero a 0. Cuando lleguemos a 60 minutos es que ha pasado una hora. Incrementamos la hora y ponemos el minutero a 0. Y por último, cuando lleguemos a 24 horas, ponemos estas a 0.

Lo último del script será poner los datos en un campo input de un formulario. Sencillo ¿no?

document.frm.hora.value =" " + hora 
   + ":" + minutos + ":" + segundos; 

Y volver a ejecutar la función de paso de un segundo:

window.setTimeout("mostrar()",1000); 

Ya tenemos el reloj de nuestro servidor. Claro que siempre y cuando a este no le cambien la fecha on-line ¿verdad?

arriba


"Muchas veces me moria pensando que no iba verte.
Pero moria la muerte cada vez que te veia". E.Galeano.


© Copyright 2001-2006. Víctor Cuervo
aulambra.com | Linea de Codigo