Foros del Web » Programando para Internet » Javascript »

como obtener un timezone local

Estas en el tema de como obtener un timezone local en el foro de Javascript en Foros del Web. Saludos estoy dando mis primerso pasos en java, ya había posteado el tema pero me equivoqué de subforo, ahora si que estoy en el subforo ...
  #1 (permalink)  
Antiguo 30/01/2010, 01:52
 
Fecha de Ingreso: marzo-2009
Mensajes: 19
Antigüedad: 15 años, 1 mes
Puntos: 0
como obtener un timezone local

Saludos estoy dando mis primerso pasos en java, ya había posteado el tema pero me equivoqué de subforo, ahora si que estoy en el subforo correcto...espero,

gracias a la ayuda de maycolalvarez he solucionado un problema con el contador regresivo para que este se ajustara a diferentes Husos Horarios dependiendo del gmt del usuario y funciona corectamente, pero esto me ha llevado a un nuevo problema,que solo fallaría si el gmt de origen cambia,
ahora la cuestion es hay alguna forma de obtener el timezone local??
sin tener que editar el script al cambiar de horario de verano a invierno o biceversa?

en mi caso cambiaría la variable gmt_local al nuevo huso horario

Código:
// Contador regresivo en java adaptado segun huso horario
// definimos estilos
document.write("<form name='p56'><input style='text-align:center; font-family:arial, helvetica, sans-serif; font-size:14px; width:450px; color:#ffffff;font-weight:normal;background-color:transparent; padding:3px; margin:0px 0px 0px 0px;overflow:visible;border:0px;' id='pagein' name='pageinval85'/></form>");
function countdown_load56()
{
// definimos el texto antes del evento
	var the_event="Faltan...";
// definimos el texto despues del evento
	var on_event="Evento";
// definimos fecha yr=año, mo=mes, da=dia, Hr=hora
	var yr=2010;var mo=02;var da=7;var hr=22;
// definimos mi=minutos, sec=segundos
	var min=00;var sec=0; var month='';
// definimos husos horarios del país (gmt-4 local/gmt-3 verano chile) (gmt+1 local/gmt+2 verano España)	
    var gmt_local=-3;


//fecha y correcion de timezone

	var month=new Array("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec");
	var bottom_event="";
	var now_d=new Date();
	var now_year=now_d.getYear();
	if (now_year < 1000)now_year+=1900;
	var now_month=now_d.getMonth();
	var gmtu=-1*(now_d.getTimezoneOffset()/60);
	var gmtHours =gmtu+(-1*gmt_local);
        gmtHours=gmtHours*(60*60*1000);
	var now_hour=now_d.getHours();
	var now_day=now_d.getDate();
	var now_min=now_d.getMinutes();
	var now_sec=now_d.getSeconds();

//caulculos y ajuste de contador regresivo
var now_val=month[now_month]+" "+now_day+", "+now_year+" "+now_hour+":"+now_min+":"+now_sec;event_val=month[mo-1]+" "+da+", "+yr+" "+hr+":"+min+":"+sec;
difference=Date.parse(event_val)-Date.parse(now_val);
difference=difference+gmtHours;
differenceday=Math.floor(difference/(60*60*1000*24)*1);
differencehour=Math.floor((difference%(60*60*1000*24))/(60*60*1000)*1);
differencemin=Math.floor(((difference%(60*60*1000*24))%(60*60*1000))/(60*1000)*1);
differencesec=Math.floor((((difference%(60*60*1000*24))%(60*60*1000))%(60*1000))/1000*1);
if(differenceday<=0&&differencehour<=0&&differencemin<=0&&differencesec<=1&&now_day==da)
{
document.forms.p56.pageinval85.value=on_event;return;
}
	else if (differenceday<=-1)
	{
		document.forms.p56.pageinval85.value="Event : "+on_event+" : passed";return;
		}
		else{
		// document.forms.p56.pageinval85.value=the_event+" "+differenceday+" dias "+differencehour+" horas "+differencemin+" minutos "+differencesec+" segundos "+gmtHours+"ajuste"}
			document.forms.p56.pageinval85.value=the_event+" "+differenceday+" dias "+differencehour+" horas "+differencemin+" minutos "+differencesec+" segundos "+sdl+"ajs"}
			setTimeout("countdown_load56()",1000);
			}
countdown_load56();
  #2 (permalink)  
Antiguo 01/02/2010, 04:08
 
Fecha de Ingreso: diciembre-2007
Ubicación: Barcelona
Mensajes: 289
Antigüedad: 16 años, 4 meses
Puntos: 8
Respuesta: como obtener un timezone local

Hola,

No se si esto es lo que quieres...

Código PHP:
Ver original
  1. <html>
  2. <body>
  3.  
  4. <script type="text/javascript">
  5. var d=new Date()
  6. var gmtHours = -d.getTimezoneOffset()/60;
  7. document.write("The local time zone is: GMT " + gmtHours);
  8. </script>
  9.  
  10. </body>
  11. </html>

Aquí tienes la referencia.

Última edición por crujikoki; 01/02/2010 a las 04:12 Razón: Añadir referencia
  #3 (permalink)  
Antiguo 01/02/2010, 07:52
 
Fecha de Ingreso: marzo-2009
Mensajes: 19
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: como obtener un timezone local

Gracias por tu respuesta cruji, pero ya utilizo getTimezoneOffset () para obtener el GMT del visitante, y corregir la diferencia horaria, al compararla como el gmt_local, el problema es que si el gmt_local (gmt del país de referencia) entra en Day Light Saving osea cambia de horario de invierno a verano el contador fallaría, eso haría tuviera que editarlo para poner el nuevo gmt de referencia, y ahí mi duda, hay alguna forma de "setear" esta variable en javascripty obtener el gmt_local de un sitio en concreto?
  #4 (permalink)  
Antiguo 02/02/2010, 01:47
 
Fecha de Ingreso: diciembre-2007
Ubicación: Barcelona
Mensajes: 289
Antigüedad: 16 años, 4 meses
Puntos: 8
Respuesta: como obtener un timezone local

Hola,

Perdón por que no había entendido bien el problema. Ahora si que lo entiendo! Y gracias a tu duda he descubierto que no en todo el mundo se avanza/atrasa l hora de la misma forma!!!

De todos modos, si te miras la referencia que te pasé, ahí dice:

Note: The returned value is not a constant, because of the practice of using Daylight Saving Time.

Y digo yo, si el script que quieres hacer, lógicamente se ejecuta en el navegador de tu usuari, no obtendrás siempre un GTM diferente? Es más, si hacemos caso de esa nota, yo entiendo de que el getTimezoneOffset() ya tiene en cuenta el horario de verano. O al menos eso he entendido yo leyendo la nota... Tienes forma de comprobarlo???

Saludos!
  #5 (permalink)  
Antiguo 02/02/2010, 14:23
 
Fecha de Ingreso: marzo-2009
Mensajes: 19
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: como obtener un timezone local

Axias Cruji por tu interes, realmente el contador regresivo funciona y ajusta las diferencias horarias con el gettimezoneoffset para que independientemente del país del que proceda el visitante este se ajuste y sé que el getitmezoneoffset tiene en cuenta el DaylightSaving , mi problema continua siendo que no sé como ajustar la variable local, me explico mejor

el contador ahora mismo está ajustado para chile gmt-3
con el gettimezoneoffset si yo entre desde España para verlo me devuelve gmt+1 (si cambio de horario devolvería gmt+2)
hasta aquí todo bien
pero si el que entra es uno de chile y este apís ha cambiado de horario el gettimezoneoffset de devolverá gmt-4 (porque gmt-3 es su horario de verano)
así pues la hora y la fecha a la cual debería retroceder el contador no será la correcta debido a que la variable gmt_local=-3, en ese momento o edito esa variable para ajustarla a gmt_local=-4 o intento que se ajuste sola cosa que no sé como hacer

pero me has dado una idea con tu respuesta que es capturar la hora del servidor
auqnue esto me plantea el mismo problema que dependo del servidor web para que funcione correctamente auqnue por ahora creo que puede ser una posibilidad.

me gustaría saber si se puede obtener el gmt de un país mediante alguna función, he encontrado algun appelt por ahí que permite eso con de java-utils.createTimeZone pero pide permiso al usuario para ejecutarse cosa que prefiero evitar y me gustaría saber si puedo hacerlo todo desde javascript
  #6 (permalink)  
Antiguo 03/02/2010, 02:00
 
Fecha de Ingreso: diciembre-2007
Ubicación: Barcelona
Mensajes: 289
Antigüedad: 16 años, 4 meses
Puntos: 8
Respuesta: como obtener un timezone local

Hola,

Te parecerá un poco guarro, pero podrías comparar la fecha actual con las de cambio de hora, así sabrás si se encuentra en verano o en invierno.

He estado googleando un poco y este tio hace algo que creo que te puede servir (vamos, yo creo que es lo que buscas...).

Si no es así, pues vuelve a postear a ver si ese día se alinean los planetas yse me ocurre como hacerlo!

Saludos.
  #7 (permalink)  
Antiguo 04/02/2010, 07:35
 
Fecha de Ingreso: marzo-2009
Mensajes: 19
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: como obtener un timezone local

Gracias Cruji, creo que puede servir, voy a estudiar como funciona el script para adaptarlo al contador, y seguro que posteo el resutlado por si alguien lo necesita tb, pero creo que puede servir lo voy a testear

Etiquetas: local
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 19:34.