Data gravada um dia antes!

5 respostas
elvisleyaraujo

Estou utilizando o netbeans 6.7 e a EclipseLink com MySQL no meu sistema.

O Problema é que quando eu gravo um data, no banco a data grava um dia antes. Por exemplo: Se eu gravar a data 20/01/2010, no banco aparece como 19/01/2010.

Já não sei o que fazer, todos os outros campos sem ser de data, gravao normalmente e não aparece nenhum erro, o que poderia ser?

5 Respostas

ArchV

elvisleyaraujo:
Estou utilizando o netbeans 6.7 e a EclipseLink com MySQL no meu sistema.

O Problema é que quando eu gravo um data, no banco a data grava um dia antes. Por exemplo: Se eu gravar a data 20/01/2010, no banco aparece como 19/01/2010.

Já não sei o que fazer, todos os outros campos sem ser de data, gravao normalmente e não aparece nenhum erro, o que poderia ser?

Nunca aconteceu este problema comigo, mas para uma melhor análise do seu problema, por que você não coloca um fragmento do seu programa para vermos como está sendo gravado a data no banco de dados?

elvisleyaraujo
public Object gravar(Object obj){
        Object obj_p = null;
        if (em.isOpen()) {
            try {
                em.getTransaction().begin();
                em.persist(obj);
                obj_p = obj;
                em.getTransaction().commit();
            } catch (Exception e) {
                em.getTransaction().rollback();
                e.printStackTrace();
                return null;
            }
        }
        return obj_p;
}

Eu uso este método para gravar, Na verdade ele grava um Objeto de uma classe de Entidade que representa uma tabela no banco de dados!
Está gravando tudo normal, até a data, porém está gravando um dia a menos!

sergiotaborda

Verifique qual é o timezone dos seus objetos de data e qual é o do banco e se eles são coerentes.

elvisleyaraujo

Como verifico qual o timezone do meu banco de dados MySQL?

desde já, agradeço a ajuda!

Scoobydoo

TIMEZONE PELO LINUX… nao sei qual seu SO
Se seu timezone não está configurado corretamente, você pode simplesmente alterá-lo.

Se você usa debian, você não precisa seguir os passos abaixo, basta executar a seguinte linha no shell:

apt-get install timezoneconf ; dpkg-reconfigure timezoneconf

Você pode verificar em qual timezone você está utilizando o comando “date”:

temp:~# date
Thu Jul 21 15:33:38 CEST 2005
temp:~#

Exatamente após a hora, temos “CEST” que é o timezone atual. Para alterar o timezone, o arquivo /etc/localtime precisa ser atualizado. Em sistemas antigos, esse arquivo é um link simbólico para outro arquivo. Em sistemas mais novos, esse arquivo realmente existe. O que fazer:

cd /usr/share/zoneinfo

Dentro deste diretório teremos vários arquivos/diretórios por país/continente.
Vamos entrar em “America”

cd America

Criando um backup do arquivo localtime atual:

cp /etc/localtime /etc/localtime-orig

Copiando

cp Sao_Paulo /etc/localtime

Verificando a hora novamente com o comando date

date

Thu Jul 21 11:08:04 BRT 2005

Agora seu sistema está no timezone correto!

Criado 20 de janeiro de 2010
Ultima resposta 20 de jan. de 2010
Respostas 5
Participantes 4