ViniGodoy 27 de nov. de 2008
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
rodrigomelo 27 de nov. de 2008
É que eu queria saber um jeito mais bonito. Sem ser na mao.
ViniGodoy 27 de nov. de 2008
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." );
rodrigomelo 27 de nov. de 2008
excelent!!!
Irei testar.
Obrigado!
rodrigomelo 27 de nov. de 2008
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.
ViniGodoy 27 de nov. de 2008
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.
felipe.bento 19 de jan. de 2012