Transformar horas em horas e minutos

5 respostas
IsraelPinheiro

Bom dia para todos,

Estou com o seguinte problema, tenho uma aplicação que em um dado momento me retorna um tempo em horas na forma de um float, como por exemplo 3.5 horas (3 horas e meia), gostaria de saber como posso fazer para converter estas horas para horas e minutos, como por exemplo de 3.5 para 3:30 já tentei com o que segue abaixo, mas os resultados não são confiáveis

public String converteHora_Minuto(float valorFinalEmHoras){
        int inteiro = (int)valorFinalEmHoras;
        float decimal = valorFinalEmHoras-inteiro;
        int hora = inteiro;
        float minutoF = decimal*60;
        int minuto=(int)minutoF;
        String hora_minuto = hora+":"+minuto;
        return hora_minuto;
    }

Obrigado pela ajuda.

5 Respostas

tuliomonteazul

Tenta utilizando a classe Calendar. Aqui um exemplo:

float h = 3.5f;
Calendar cal = new GregorianCalendar();
		
int minutos = (int) (h * 60);

cal.clear(); // para limpar o campo hora
cal.set(Calendar.MINUTE, minutos);
	
System.out.println("hora: " + cal.get(Calendar.HOUR_OF_DAY));
System.out.println("minuto: " + cal.get(Calendar.MINUTE));

Edit:

Você também pode exibir a hora e o minuto formatados assim:

SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");
		
String horaFormatada = sdf.format(cal.getTime());
System.out.println(horaFormatada);
Milk15

Recomendo o que o túlio colocou ai, mas pelo que eu entendi esse método de conversão que vc colocou esta correto, o que seria esse “não confiável”?

IsraelPinheiro

No caso, não confiável é pq se por exemplo informo uma hora que deveria me retornar 3:19 ele arredonda e retorna 3:20 e no caso da minha aplicação a precisão é necessária.

IsraelPinheiro

Não consegui usar muito bem as dicas acima, mas quebrei a cabeça um pouco e acabei resolvendo tudo com um simples while

public String converteHora_Minuto(float valorFinalEmHoras){ float tempoM= valorFinalEmHoras*60; int hora=0; int minutos=0; String hora_minutos="00:00"; while(tempoM>=60){ hora++; tempoM=tempoM-60; } minutos=(int)tempoM; hora_minutos = hora+":"+minutos; return hora_minutos; }

M

Seu método ta certo…não se preocupe!

Criado 1 de agosto de 2011
Ultima resposta 15 de ago. de 2011
Respostas 5
Participantes 4