Data gravada no MysQL grava com um dia a menos de diferença?

Pessoal bom dia!

Estou com um problema de um livro que estou estudando de uma aplicação web usando jsf e hibernate.

Para resumir a aplicação funciona corretamente, que é gravar alguns dados do formulário jsf para o banco de dados mysql:
Nome, email, data nascimento, celular, login e senha…
O problema é que ao gravar no banco, o que acontece, por exemplo quando digito 10/01/2011 ele grava 09/01/2011!!!
Está, gravando com diferença de um dia a menos do que digitei…

Alguém já teve este problema ou pode me ajudar?

Olá, bom dia.

Já tive um problema parecido, mas debugando, percebi que quem mandava a data com um dia a menos (D-1) era o componente de data do ICEFaces. Você esta usando JSF com qual implementação? RichFaces, ICEFaces ou PrimeFaces?

Abraços!
:slight_smile:

Já tive este problema uma vez, e era relacionado ao Locale da aplicação. O Locale está relacionado ao time zone (fuso) configurado , se o seu dado na coluna do banco está configurado como TIMESTAMP ou DATETIME, ele leva em consideração a hora também. Se a o banco estiver configurado com um timezone diferente, ele tenta converter o horário e pode ser que a data mude. Verifique as configurações de Locale da sua aplicação (em algumas distribuições de Linux o default é en_US, e o java pega a configuração do sist. operacional)

[quote=eduardoac]Olá, bom dia.

Já tive um problema parecido, mas debugando, percebi que quem mandava a data com um dia a menos (D-1) era o componente de data do ICEFaces. Você esta usando JSF com qual implementação? RichFaces, ICEFaces ou PrimeFaces?

Abraços!
:slight_smile:
[/quote]

Olha eu ainda não cheguei na parte destes frameworks, mas ao que parece o livro usará o PrimeFaces…

Abraço.

Pesaquisando na NET vi alguma coisa deste tipo… No meu BD o campo está como date, mas como faço para configurar este LOCALE?

amigo vc deve estar fazendo uma aplicao web, ne?
entao sua aplicacao esta rodando em um servidor instalado na sua propria maquina certo?
como servidor esta na sua maquina e vc esta fazendo uma consulta no mysql ele pega a data do seu computador…ja verificou a data do seu pc ?

[quote=levita104]amigo vc deve estar fazendo uma aplicao web, ne?
entao sua aplicacao esta rodando em um servidor instalado na sua propria maquina certo?
como servidor esta na sua maquina e vc esta fazendo uma consulta no mysql ele pega a data do seu computador…ja verificou a data do seu pc ?[/quote]

Fala amigão! Boa tarde! Não tinha olhado não, mas acabei de olhar e está ok. A data está correta…

Pessoal boa tarde a todos! O problema era realmente no locale e no timezone depois de configurados está gravando corretamente.

Quero agradecer a todos pela ajuda.

Abraços.

Por favor, poderia responder se era do banco de dados ou da aplicação?
:slight_smile:

Era da aplicação! Creio que por causa do horario de verão ele estava calculando de forma errada e como disse acima apenas acrescenteia a aplicação o locale e o timezone na tag desta forma: <f:convertDateTime type=“date” pattern=“dd/MM/yyyy” dateStyle="medium locale=“pt_BR” timeZone=“GMT-3”/>

Espero que ajude mais alguém.

Abraços.

1 curtida

Ótimo, muito bom!
:slight_smile:

Eu adoro este forum do GUJ, essa dica ajudou a solucionar o meu problema, valeu!!!

Nossa que maravilha, resolveu meu problema , valeu t++++

Pra ver como o tempo não deve apagar as postagens antigas. Precisei hoje desta dica e me livrou de um grande problema.