Foros del Web » Programación para mayores de 30 ;) » Java »

Countdown para días,horas,minutos y segundos.

Estas en el tema de Countdown para días,horas,minutos y segundos. en el foro de Java en Foros del Web. Buenos días, es la primera vez que escribo en esta sección. Mi problema es el siguiente, no consigo dar con el algoritmo para realizar una ...
  #1 (permalink)  
Antiguo 16/02/2012, 04:34
 
Fecha de Ingreso: agosto-2009
Mensajes: 134
Antigüedad: 15 años, 3 meses
Puntos: 3
Countdown para días,horas,minutos y segundos.

Buenos días, es la primera vez que escribo en esta sección.
Mi problema es el siguiente, no consigo dar con el algoritmo para realizar una cuenta atrás sobre una fecha en concreto, me explico.
Yo tengo por ejemplo 24 días y me gustaría realizar un contador que me diga:

TE QUEDAN "x HORAS" " "x MINUTOS" "x SEGUNDOS" PARA LA FECHA FINAL

Repito, un countdown dado una cantidad de días y que automáticamente, refresque los segundos, minutos,horas.
¿Alguien me puede guiar?
  #2 (permalink)  
Antiguo 16/02/2012, 04:57
 
Fecha de Ingreso: marzo-2009
Mensajes: 509
Antigüedad: 15 años, 8 meses
Puntos: 17
Respuesta: Countdown para días,horas,minutos y segundos.

Hola, con un timer es muy fácil de hacer, sólo tienes que hacer que cada segundo refresque el mensaje.

Hay un montón de ejemplos en internet con timer y cuentas atrás.

Saludos!
  #3 (permalink)  
Antiguo 16/02/2012, 05:49
 
Fecha de Ingreso: agosto-2009
Mensajes: 134
Antigüedad: 15 años, 3 meses
Puntos: 3
Respuesta: Countdown para días,horas,minutos y segundos.

Hola cucuru! gracias por la atención!
Lo del timer lo tenía en mente,pero me planteaba las siguientes dudas:
-¿Cómo puedo hacer para que la cuenta atrás sea real?, es decir si yo ejecuto la aplicación a las 18:30 que me muestre lo que me queda para llegar a mi fecha límite, y si lo ejecuto a las 22:00 me muestre las horas, minutos y segundos que quedan reales.

Me resulta bastante complicado explicarme, lo siento. Espero que hayáis entendido cual es mi objetivo.
Gracias!
  #4 (permalink)  
Antiguo 16/02/2012, 06:20
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 16 años, 2 meses
Puntos: 188
Respuesta: Countdown para días,horas,minutos y segundos.

nº días = variable
nº horas/dia = 24
nº minutos/hora = 60
nº segundos/minuto = 60

Dado que puedes averiguar el tiempo total que falta y el timer avanza hacia delante, el tiempo real que falta es: Tiempo Total - Tiempo Timer (Creo que esto se mide en milisegundos, así que deberías reconvertirlo a segundos antes de operar).

Luego divides x 24 y y con el resultado entero de la división hallas el nº de dias, el resto de esa división lo divides entre 60 y con el resultado entero hallas el nº de horas, y el nuevo resto lo vuelves a dividir entre 60 y obtendrías los minutos... el resto que quedase ya serían los segundos.

// La otra opción que tienes es que en el momento de activar lo hagas usando dates (para setear la fecha de fin), y cuando te conectes obtengas una instancia de la fecha y la compares con la fecha de fin. Obtendrías los milisegundos que faltan, sin necesidad de timer.
__________________
if (fuzzy && smooth) {
fuzzylog = "c00l";
return true;
}
  #5 (permalink)  
Antiguo 16/02/2012, 06:22
 
Fecha de Ingreso: marzo-2009
Mensajes: 509
Antigüedad: 15 años, 8 meses
Puntos: 17
Respuesta: Countdown para días,horas,minutos y segundos.

hola, creo que sí que te he entendido, yo hago eso mismo, en una aplicación que se ejecuta todos los días a las 00:00.

Esto es lo que hago:

Código:
        Timer timer = new Timer();
        Date today = new Date();
		Time now = new Time(today.getTime());
		String time = now.toString();
		long milliSecondsNow = (Long.valueOf(time.substring(0,2))*3600 + Long.valueOf(time.substring(3,5))*60 + Long.valueOf(time.substring(6,8)))*1000; 
		long periodTime = 24*3600*1000; 
		timer.schedule(timerTask, (periodTime-milliSecondsNow), periodTime);
Como ves, miro los milisegundos que tengo ahora mismo del día (milliSecondsNow).

Calculo el número de milisegundos desde las 00:00 hasta mi hora de timer (tb las 00:00).

Y el temporizador arranca cuando pasen el número de segundos adecuados.

Como tú quieres a las 18:30 te aconsejo un if (millisAhora < millisTimer) restas de una manera

else
de otra.

Espero que te sirva. Saludos

Etiquetas: countdown
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:36.