Galera estou precisando desenvolver um contador regressivo utilizando Threads
Eu vou passar uma Data (String) e ele vai pegar a data do sistema e começar a contar quantos dias, horas, minutos e segundos faltam para aquela data.
Preciso de uma luz…
Galera estou precisando desenvolver um contador regressivo utilizando Threads
Eu vou passar uma Data (String) e ele vai pegar a data do sistema e começar a contar quantos dias, horas, minutos e segundos faltam para aquela data.
Preciso de uma luz…
qual sua duvida? criar a thread ou calcular as datas?
Dá uma olhada nesse post:
http://www.guj.com.br/posts/list/52964.java#279083
E nos dois depois dele… são 3 exemplos do que você quer, um utilizando javax.swing.Timer, outro utilizando java.util.Timer e outro utilizando Threads. Acho que para vc, a primeira opção é a melhor.
Depois só adapte o exemplo para o contador se regressivo, ao invés de progressivo.
Calcular as datas…
Tipo peguei a String com a data que o cara quer
como irei calcular a diferença entre esta e a atual e jogar isto no Label de minha interface?
Você está usando a péssima classe Calendar ou o ótimo JODA-Time?
Se estiver usando o Calendar, sempre dá para pegar o tempo em milisegundos e calcular.
Nem sei cara
Java.util.Date
nada mais
pode usar esses metodos
public static String getDifDate(Date date1, Date date2) {
return getDifDate(date1, date2, "dd/MM/yyyy HH:mm:ss");
}
public static String getDifDate(Date date1, Date date2, String format) {
GregorianCalendar gc1 = new GregorianCalendar();
gc1.setTime(date1);
GregorianCalendar gc2 = new GregorianCalendar();
gc2.setTime(date2);
GregorianCalendar gc3 = new GregorianCalendar();
gc3.set(gc1.get(Calendar.YEAR), gc1.get(Calendar.MONTH), gc1.get(Calendar.DAY_OF_MONTH), gc2.get(Calendar.HOUR)
- gc1.get(Calendar.HOUR), gc2.get(Calendar.MINUTE) - gc1.get(Calendar.MINUTE), gc2.get(Calendar.SECOND)
- gc1.get(Calendar.SECOND));
return new java.text.SimpleDateFormat(format).format(gc3.getTime());
}
esse aqui para criar um Date a partir da String
/**
* Retorna um java.util.Date a partir de um texto/data local do SO, no
* formato dd/MM/yyyy. Se houver algum erro, retorna null
*/
public static java.util.Date convertDate(String date) {
DateFormat format = DateFormat.getDateInstance();
format.setLenient(false);
try {
return new java.util.Date(format.parse(date).getTime());
} catch (Exception e) {
return null;
}
}
Fica assim:
[code]long futuro = dataFutura.getTime();
long presente = new Date().getTime();
long diferenca = futuro - presente; //Esse tempo está em milisegundos.
diferenca /= 1000; //Agora em segundos.
//Extrai os segundos
int segundos = diferenca % 60;
diferenca /= 60;
//Extrai os minutos
int minutos = diferenca % 60;
diferenca /= 60;
//Sobrou as horas
int horas = (int) diferenca;
lblTempo.setText(String.format("%02d:%02d:%02d", horas, minutos, segundos));[/code]
Talvez estejam faltando alguns casts, eu não testei o código. Mas a lógica é essa.