Manipulacao String

String

Manipulação de String para formatação de horas

Essa semana tive um desafio bem legal pegar um valor de minutos e transforma-lo em horas. Basicamente eu recebo o valor 2.5m e transformo em 00:02:30. Veja:

2.5 = 00:02:30
61.5 = 01:01:30
121.5 = 02:01:30

A solução que proponho é:

public static String getHoraFormatadaFromMinutosInteiro(String minutosInteiro){
    	
	String horas = "00";
	String minutos = "00";
	String segundos = "00";
	
	if(!HowMUtilities.isEmpty(minutosInteiro)){
	
		if(minutosInteiro.contains(".")){
			
			String[] split = minutosInteiro.split("\\.");
			
			int qtdMinuto = Integer.parseInt(split[0]);
			double qtdSegundos = Integer.parseInt(split[1]);
			qtdSegundos = 60 * (qtdSegundos / 10);
			
			if(qtdMinuto < 10){
				minutos = "0"+qtdMinuto;
			} else {
				
				if(qtdMinuto > 59){
					int qtdHoras = qtdMinuto / 60;
					int resto = (qtdMinuto % 60);
					
					horas = "0"+qtdHoras;
					
					if(resto < 10){
						minutos = "0"+resto;
					} else {
						minutos = ""+resto;
					}
					
				} else {
					minutos = ""+qtdMinuto;
				}
			}
			
			if(qtdSegundos < 10){
				segundos = "0"+qtdSegundos;
			} else {
				segundos = ValidaFormatos.fromBDNumber(""+qtdSegundos, 0) ;
			}
			
		} else {
			
			int qtdMinuto = Integer.parseInt(minutosInteiro);
			
			if(qtdMinuto < 10){
				minutos = "0"+qtdMinuto;
			
			} else if(qtdMinuto > 59) {
				
				int qtdHoras = qtdMinuto / 60;
				int resto = (qtdMinuto % 60);
				
				horas = "0"+qtdHoras;
				
				if(resto < 10){
					minutos = "0"+resto;
				} else {
					minutos = ""+resto;
				}
				
			} else {
				minutos = ""+qtdMinuto;
			}
		}
	}
	
	return horas+":"+minutos+":"+segundos; 
	
}

Outra solução bem legal que o camarada Rodrigo Godoy propos é:

private static String getHoraFormatadaFromMinutosInteiro(String time) {
	Duration dur = Duration.ofMillis((long)(Double.parseDouble(time) * 60000));
	long hours = dur.toHours();
	long minutes = dur.toMinutes()%60;
	long seconds = (dur.toMillis()/1000)%60;
	return String.format("%02d:%02d:%02d", hours, minutes, seconds);
}

Compartilhe

Back