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 | ||
![]() | ![]() | ![]() |