Como faco para mostrar minha diferença de horas recuperada em milisegundos em HH:mm?
Meu codigo atual até converte, mas dá uma diferença de 3 hrs.
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");
GregorianCalendar gregorianCalendar = new GregorianCalendar();
gregorianCalendar.setTimeInMillis(getDateDiffMillis());
gregorianCalendar.set(Calendar.ZONE_OFFSET, 0);
return sdf.format(gregorianCalendar.getTime());
Já troquei o ZONE_OFFSET pra +3, -3, 0, e nada.
To pensando aqui se essa diferença ultrapassar 24 hs… O codigo nao serve mais.
Alguem sabe como faz isso?
Usando o sinal de dividir?
long timeInMillis = getDateDiffMillis() / 1000; //Pegamos em segundos
int seconds = timeInMillis % 60
timeInMillis = time / 60
int minutes = timeInMillis % 60
int hours = time / 60
É que eu queria saber um jeito mais bonito. Sem ser na mao.
A porcaria da API de tempo do Java não tem o conceito de duração. Só de data.
A solução para fazer bonito é usar uma API decente, como a Joda-time:
http://joda-time.sourceforge.net/
Aí você pode deixar bonito assim:
LocalTime start = new LocalTime("10:00:00");
LocalTime end = new LocalTime("11:30:00");
Period period = new Period(start, end);
System.out.println("Entre as duas datas há: " + period.getDays() + " dias, "
+ period.getHours() + " horas "
+ period.getMinutes() + " minutos.");
Cara excelente mesmo. Veja soh:
Period period = new Period(getDataHoraInicio().getTime(), getDataHoraFim().getTime());
PeriodFormatter periodFormatter = new PeriodFormatterBuilder().printZeroAlways().appendWeeks().appendSuffix(
" semana", " semanas").appendSeparator(", ").appendDays().appendSuffix(" dia", " dias")
.appendSeparator(", ").minimumPrintedDigits(2).appendHours().appendSeparator(":").appendMinutes()
.appendSeparator(":").appendSeconds().toFormatter();
return periodFormatter.print(period);
Isso consegue imprimir por exemplo:
0 semanas, 1 dia, 02:55:00
Obrigado mais uma vez ViniGodoy.
Essa API é excelente. Depois dela, nunca mais vc vai querer usar o Calendar.
Não é a toa que ela já virou JSR e é bem votada para ser parte integrante do Java nas futuras versões.