Bom dia, pessoal!!!
Eu estou fazendo um projeto no qual ele calcula a diferença entre o horário atual (que posso chamar de inicial) e o horário final, no qual esta diferença deve der apresentada em um label, alterando a cada 1 minuto.
Construi o seguinte código:
import java.awt.Dimension;
import java.awt.Toolkit;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
/**
*
* @author vanessa
*/
public class Indicador {
/**
* @param args the command line arguments
*/
public static void main(String[] args) throws ParseException {
IndicadorDiario indicadorDiario= new IndicadorDiario();
Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();
int minutos = 0;
int horas = 0;
indicadorDiario.setVisible(true);
DateFormat fm = new SimpleDateFormat("HH:mm:ss");
Date data1 = fm.parse("16:00:00");
while (true) {
fm = new SimpleDateFormat("HH:mm:ss");
Date data2 = fm.parse("15:35:15"); // ESTE HORÁRIO INICIAL É APENAS PARA TESTE, EU TENHO QUE PEGAR O HORÁRIO ATUAL, ALTERADO A CADA UM SEGUNDO
// vamos obter a diferença em semanas, dias, horas,
// minutos e segundos
long segundos = (data1.getTime() - data2.getTime()) / 1000;
// int semanas = (int)Math.floor(segundos / 604800);
// segundos -= semanas * 604800;
// int dias = (int)Math.floor(segundos / 86400);
// segundos -= dias * 86400;
int horas1 = (int)Math.floor(segundos / 3600);
segundos -= horas * 3600;
int minutos1 = (int)Math.floor(segundos / 60);
segundos -= minutos * 60;
// exibe o resultado
System.out.println("As duas datas tem " +horas1+" horas, " + minutos1 + " minutos e " +segundos + " segundos de diferença");
GregorianCalendar d = new GregorianCalendar();
minutos = d.get(Calendar.MINUTE);
System.out.println("Minutos " + minutos);
horas = d.get(Calendar.HOUR_OF_DAY);
System.out.println("Horas " + horas);
IndicadorDiario.jLabel8.setText(String.valueOf(horas
)+':'+String.valueOf(minutos));
}
}
}
Porém, os resultados que são apresentados são:
As duas datas tem 0 horas, 24 minutos e 1485 segundos de diferença
Minutos 38
Horas 8
As duas datas tem 0 horas, -455 minutos e -29595 segundos de diferença (permanece infinitamente apresentando esta linha, sem alterações)
Minutos 38
Horas 8
O primeiro resultado está correto, mas, ele deve alterar a cada um segundo, como eu faço esta alteração?
Também gostaria de apresentar as horas no formato mais convencional, ou seja, se horas menores do que 10, apresentarem seus valores com o 0 (zero) na frente: 01, 02, etc, o mesmo para os minutos, porém, o meu código, apresenta este valor inteiro: 1, 2, etc. A uma função que insere este 0?
Grata a todos!