Data gravada no MysQL grava com um dia a menos de diferença?
13 respostas
G
Genoma
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…
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!
A
amhfilho
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)
G
Genoma
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!
Olha eu ainda não cheguei na parte destes frameworks, mas ao que parece o livro usará o PrimeFaces…
Abraço.
G
Genoma
Pesaquisando na NET vi alguma coisa deste tipo… No meu BD o campo está como date, mas como faço para configurar este LOCALE?
L
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 ?
G
Genoma
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 ?
Fala amigão! Boa tarde! Não tinha olhado não, mas acabei de olhar e está ok. A data está correta…
G
Genoma
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.
E
eduardoac
Por favor, poderia responder se era do banco de dados ou da aplicação?
G
Genoma1 like
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.
E
eduardoac
Ótimo, muito bom!
F
fabiobh
Eu adoro este forum do GUJ, essa dica ajudou a solucionar o meu problema, valeu!!!
A
alexfe
Nossa que maravilha, resolveu meu problema , valeu t++++
B
baldinmarcelo
Pra ver como o tempo não deve apagar as postagens antigas. Precisei hoje desta dica e me livrou de um grande problema.