Foros del Web » Programando para Internet » Javascript »

Tomar la hora del servidor con javascript

Estas en el tema de Tomar la hora del servidor con javascript en el foro de Javascript en Foros del Web. Wenas: Resulta que tengo una aplicación que te permite acceder a unas páginas por reserva, me explico. Tu entras y haces una reserva para ver ...
  #1 (permalink)  
Antiguo 16/06/2009, 12:36
 
Fecha de Ingreso: marzo-2008
Mensajes: 12
Antigüedad: 16 años, 1 mes
Puntos: 0
Tomar la hora del servidor con javascript

Wenas:

Resulta que tengo una aplicación que te permite acceder a unas páginas por reserva, me explico.

Tu entras y haces una reserva para ver una página tal día a tal hora, y la hacer por 1, o 2 horas de duración.


Bien. una vez que tengas la reserva hecha sólo puedes entrar en ella el día y a la hora de la reserva, cosa que controlo por PHP. Tengo una función en php que te controla el tiempo que te queda internamente, pero claro, php coje la hora del servidor, no del ordenador del cliente.

Mi problema es: tengo un contador que me muestra la cuenta atrás del tiempo que me queda para ver la página en javascript, pero claro, javascript es un lenguaje no orientado a servidor, por lo que la hora me la toma del cliente y la cuenta atrás no coincide con el tiempo que de verdad te queda de reserva, por no hablar si se entra desde algún país que tenga distinta región horaria que el de donde esta el servidor.

Habría alguna manera de hacer que el javascript tomara la hora del servidor??

En concreto mi función es:

Código:
<?php

       //Tomo los valores de la reserva de la base de datos.

	$end_year = strftime('%Y', $termina);
	$end_month = strftime('%m', $termina);
	$end_day = strftime('%d', $termina);
	$end_hour  = strftime('%H', $termina);
  	$end_min   = strftime('%M', $termina);
	$end_seg   = strftime('%S', $termina);
	
	
?>

// Los guardo en las variables de javascript para usarlos en la función

toYear=<?php echo $end_year;?>;
toMonth=<?php echo $end_month;?>;
toDay=<?php echo $end_day;?>;
toHour=<?php echo $end_hour;?>;
toMinute=<?php echo $end_min;?>;
toSecond=<?php echo $end_seg;?>;


function countDown()
{
	new_year=0;
	new_month=0;
	new_day=0;
	new_hour=0;
	new_minute=0;
	new_second=0;
	actual_date=new Date();

	if(actual_date.getFullYear()>toYear)
	{
		//si ya nos hemos pasado del año, mostramos los valores a 0
		form.second.value=0;
		form.minute.value=0;
		form.hour.value=0;
		form.day.value=0;
		form.month.value=0;
		form.year.value=0;
	}else{
		new_second=new_second+toSecond-actual_date.getSeconds();
		if(new_second<0)
		{
			new_second=60+new_second;
			new_minute=-1;
		}
		form.second.value=new_second;

		new_minute=new_minute+toMinute-actual_date.getMinutes();
		if(new_minute<0)
		{
			new_minute=60+new_minute;
			new_hour=-1;
		}
		form.minute.value=new_minute;

		new_hour=new_hour+toHour-actual_date.getHours();
		if(new_hour<0)
		{
			new_hour=24+new_hour;
			new_day=-1;
		}
		form.hour.value=new_hour;

		new_day=new_day+toDay-actual_date.getDate();
		if(new_day<0)
		{
			x=actual_date.getMonth();
			if(x==0||x==2||x==4||x==6||x==7||x==9||x==11){new_day=31+new_day;}
			if(x==3||x==5||x==8||x==10){new_day=30+new_day;}
			if(x==1)
			{
				//comprobamos si es un año bisiesto...
				if(actual_date.getYear()/4-Math.floor(actual_date.getYear()/4)==0)
				{
					actual_date=29+actual_date;
				}else{
					actual_date=28+actual_date;
				}
			}
		}
		form.day.value=new_day;

		new_month=-1;
		new_month=new_month+toMonth-actual_date.getMonth();
		if(new_month<0)
		{
			new_month=11+new_month;
			new_year=-1;
		}
		form.month.value=new_month;

		new_year=new_year+toYear-actual_date.getFullYear();
		if(new_year<0)
		{
			form.year.value=0;
		}else{
			form.year.value=new_year;
			//vuelve a ejecutar la funcion dentro de 1000 milisegundos = 1 segundo
			setTimeout("countDown()",1000);
		}
	}
}
He intentado tomar los parámetros con php y pasarselos a los del javascript, pero no lo consigo....

AYUDA POR FAVOR!!!
  #2 (permalink)  
Antiguo 17/06/2009, 03:04
 
Fecha de Ingreso: marzo-2008
Mensajes: 12
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: Tomar la hora del servidor con javascript

No es posible hacer lo que pretendo?? nadie puede decirme como?? una ayudita por favor!!!
  #3 (permalink)  
Antiguo 17/06/2009, 05:44
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Tomar la hora del servidor con javascript

El camino para hacerlo es ese lo que has puesto en principio deberia funcionar... como mínimo hasta la asignación de los valores a las variables.... las variables tendran los valores en formato de texto con lo que tendras que cambiarlos de formato para poder operar con ellos... y claro esos valores seran los del momento en que se carga la pagina.... para poder coger unos datos del servidor a partir de un momento/evento generado por javascript tienes que generar una nueva petición al servidor...

Creo que el camino seria cargar los datos via ajax... Ejecutar código JavaScript y CSS añadido/cargado mediante AJAX yo con este tutorial he conseguido incluir nuevos scripts a una pagina... estudialo que ese es el camino... creo.

Quim
  #4 (permalink)  
Antiguo 17/06/2009, 06:49
 
Fecha de Ingreso: marzo-2008
Mensajes: 12
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: Tomar la hora del servidor con javascript

Gracias por la respuesta, ya le estoy hechando un ojo...

En verdad sólo quiero que la variable
Cita:
actual_date=new Date();
Tome el valor de la fecha del servidor y no la de el cliente. he probado con un date() en php y guardar ese valor en el actual_date, pero no se corresponden los formatos y no funciona bien la funcion...
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:44.