Já li alguns tópicos e abri este pois não consegui resolver:
tenho um campo data de nascimento (no banco é apenas um DATE), não preciso das horas… Ele grava a data certo mas dependendo de que horas são fica mostrando um dia a menos (mesmo estando certo no banco), ou seja, se coloco 05/08/1984 ele mostra 04/08/1984, mesmo estando no banco com 05/08/1984 (é como se as horas deixassem o campo maluco). Já tentei timezone GMT-3, UTC-3…tem como mostrar só a data não considerando diferenças de fusos, na verdade não considerando hora (visto que é uma data de nascimento)?
segue trecho do código:
[code] <h:inputText converterMessage=“A data de nascimento deve ser informada corretamente” requiredMessage=“A data de nascimento deve ser informada.” id=“datanascimento” required=“true” value="#{clienteBean.cliente.dataNascimento}" >
Olá, mas ele vai considerar o horário de verão? ou funciona para qualquer caso? não vai ficar dependendo da hora do dia não?
desculpa as perguntas mas é que já testei vários timezones, até achei que tinha resolvido com o UTC-3, pois no horário que testei ele parou de mostrar errado mas passou algumas horas e começou a mostrar errado. Percebo diferença principalmente nas horas próximas a virada de outro dia…
na verdade não queria usar timezone (nem queria tratar horas), como falei é uma data de nascimento que é informada pelo usuário…o timezone se não for citado vai ser utilizado de qualquer forma pelo jeito (de algum lugar, nem que seja o default), que coisa chata, queria somente a data, sem considerar hora visto que nem tem sentido num campo DATE.
O que eu acho que pode estar acontecendo é que quando você busca a data do banco para ser exibida, ela é convertida para um objeto java.util.Date com um time zone diferente, o que pode estar reduzindo algumas horas da sua data e consequentemente exibindo um dia a menos no momento da exibição.
Mesmo que o campo do banco de dados seja do tipo DATE (sem armazenar as horas), acredito que no momento em que o Java busca esse campo no banco de dados, o valor recebido é um long que será convertido em um java.util.Date com horas e uma time zone.
Mas então o timeZone=“America/Sao_Paulo” não funcionou?
mostrou correto como está no banco (lembrando que é um Date no banco e um Date no java, acho que o lixo vem do date do java, visto que não tem horas no banco).
Enfim, parece ter resolvido…obrigado pela ajuda
Lsouza13, as datas estã perfeitas no banco (gravaram erradas quando por minutos coloquei UTC-3, quando tava GMT-3 gravou tudo certinho), problema é só no retorno e nem em todas as datas, é como se tivesse uma “sujeira” de horas que combinada com o fuso do timezone, acaba visualizando errado… só na visualização do componene na tela devido ao timezone (lembrando que antes estava GMT-3)
Quando realizo uma consulta no BD por uma data como 10/10/2010 e lá existe um registro assim ele não encontra, somente se eu incrementar em 1 dia (11/10/2010).
Estou com o mesmo problema e só consegui resolver utilizando dentro do converterDateTime o timezone.
Sendo o segundo dataInclusao o parametro recebido no metodo que faz a query.
A consulta realiza com sucesso quando informo uma data tipo 10/10/2010 e esta existe no banco, mas apenas se dentro do converter eu definir o timezone:
Se eu tirar o timezone e tentar setar um universal, no web.xml conforme dito antes, não funciona. Ele encontrará o mesmo registro apenas se eu adicionar 1 dia (11/10/2010) no inputtext. Aí ele acha o registro (10/10/2010).
Sendo que no banco o tipo está Date, e só existe informação sobre a data, o horario está todo 00:00:000.
*EDIT: Bom, utilizando um simples componente do primefaces o problema não ocorre mais:
<p:calendar value="#{carroMB.dataAtivacao}" />
Se depois descobrir o que ocorre com o converter dentro do inputtext eu posto aí. Obrigado.