Estou com problemas de formatação de data com o SimpleDateFormat.
Meu código é este:
dateFormat = new SimpleDateFormat(" hh 'h' mm 'm' ss 's' SSS 'ms'");
long x = endTime - initTime;
System.out.println(x);
System.out.println(dateFormat.format(x));
No primeiro sysout o programa printa na tela o valor 24375.
No segundo sysout o programa printa na tela o valor 09 h 00m 24s 375sss
Alguem sabe porque ele printa estas 09h e não 00h?!
Nossa, interessante esse problema mesmo…
Se vc dividir o 24375 q entra como valor do x por (1000 * 60 * 60) q é uma hora o retorno é zero… :?:
Alguém mais entendido aí sabe responder essa?
WashingtonBotelho
Fiz o teste aqui e imprimiu ‘09 h 00 m 24 s 375 ms’:
SimpleDateFormat dateFormat = new SimpleDateFormat(" hh 'h' mm 'm' ss 's' SSS 'ms'");
long x = 24375;
System.out.println(x);
System.out.println(dateFormat.format(x));
O endTime e o initTime são duas variaveis do tipo long.
eu tentei formatar a hora com :, mas o problema continua…
T
thingol
SimpleDateFormat não é adequado para imprimir diferenças entre datas.
Ele serve para imprimir datas.
Portanto, esse valor (24375 ms) foi considerado como “dia 01/janeiro/1970 + 24,375 s, no fuso horário UTC (GMT).” Como o Brasil é atrasado em relação à Inglaterra de 3 horas, então esse valor, impresso, daria 31/dezembro/1969, 21:00:24 + 0,375 segundos.
Você usou “hh”, então vai imprimir 09 horas (9 da noite). Se você tivesse usado “HH” (que é o jeito correto de imprimir horas de 00 a 23), então você teria percebido que iria aparecer “21 horas etc.”.
L
LeticiaGH
Então como eu devo fazer para imprimir a diferença de hora de forma correta?!
T
thingol
Não é por nada não, mas eu faria contas - é mais fácil.
No seu caso, veja se isto está funcionando.
publicstaticStringimprimeDiferenca(Dateinicio,Datefim){longt=fim.getTime()-inicio.getTime();longh,m,s,ms;h=t/(60*60*1000);t=t%(60*60*1000);m=t/(60*1000);t=t%(60*1000);s=t/1000;ms=t%1000;returnString.format("%02d h %02d m %02d s %03d ms",h,m,s,ms);}