Data vindo do banco é sempre 1 dia atrás

5 respostas
felipe_gdr

Olá!

Uso BD MySql, e minha aplicação usa JSF e SEAM.

Estou tendo um problema na hora de mostrar as datas que são armazenadas no BD, elas aparecem todas 1 dia atrás. Então uma data que está no banco como: “2009-05-29” vai ser mostrada como “28 mai 2009”. Muito estranho…

Esse é a parte do xhtml que mostra a data:

<h:outputText value="#{_seance.dateSeance}" >
    <f:convertDateTime locale="FR" dateStyle="long" type="date"/>
</h:outputText>

Valeu.

5 Respostas

caiomacedor

você ja fez um select nessa tabela pra ver de a data esta mesmo com esse volor. Pode ser que o computador onde esta o BD esta com um dia de atrazo.

L

Como você gravou essa data no banco?

O grande problema é que você está usando o país França como Locale. O JSF, imbecil como ele é, assume que a data recebida do banco faz parte do TimeZone GMT-0 de Londres, e faz a conversão “apropriada” tirando algumas horas da data.

Não me lembro como esse bug era contornado. Mas você poderia usar um objeto da classe Calendar (ao invés de java.util.Date) setando explicitamente o TimeZone da França nesse objeto.

felipe_gdr

Então caiomacedo, valeu pela dica mas tudo está aqui no meu pc (BD, servidor) e o select mostra a data correta, é a interface que está se enganando por alguma razão.

Eu acabei de mudar o BD de MS SQL para MySQL, e me parece que com MS SQL eu não tinha esse problema… Não sei se o fato de usar MySQL pode influenciar nesse problema…

felipe_gdr

Valeu pela dica Leonardo, mas acredito que não seja esse o problema.
Ele teria que diminuir 18 horas para reduzir um dia da data…

felipe_gdr

Olá!

Consegui finalmente resolver esse problema (que na minha opinião é um bug do jsf!)

Foi só trocar a tag do convertTimeDate do jsf pela do Jboss Seam:

Bizarro. Se eu não estivesse usando Seam minhas datas ainda estariam todas erradas…

Valeu!

Criado 22 de maio de 2009
Ultima resposta 31 de mai. de 2009
Respostas 5
Participantes 3