Data gravada no banco diminui 1 dia

Olá, pessoal, quando eu passo como paramêtro uma data para o banco de dados MySQL, ele está diminuindo o dia em 1, exemplo:

c1.setDtNascimento("1991-12-23");
dao.add(c1);

Quando eu vou olhar no banco a data está 1991-12-22.

E se eu der um:

System.out.println(c1.getDtNascimento);

Ele retorna a data correta (1991-12-23);

c1.getDtNascimento retorna um objeto do tipo Date.

Segue como está no DAO:
stmt.setDate(4, contato.getDtNascimento());

Segue método setDtNascimento da classe Contato:

public void setDtNascimento(String YYYYMMDD){
    
    dtNascimento = Date.valueOf(YYYYMMDD);
    
}

Alguém tem alguma idéia do queu pode estar acontecendo? rs

Obrigado.

Com essas informações que você providenciou, a primeira coisa que eu olharia é a timezone do banco de dados. Qual o tipo de dado que você usou na data de nascimento, no banco de dados? Qual a timezone do banco?

BlackHeartH, aconselho vc modificar o atributo dtNascimento para “Date” ao invés de usar como “String”.
Em sua classe DAO, setar/preparar o valor do atributo na String da query da seguinte maneira:

stmt.setDate(4, new java.sql.Date(contato.getDtNascimento().getTime());

O banco de dados não reconhece de modo coerente o Date do pacote “Util” do Java, por esse motivo há a necessidade de usar a classe Date do pacote “Sql” do Java para que o banco consiga armazenar o valor do atributo corretamente.

Obrigado pelas respostas pessoal, infelizmente eu retirei o MySQL(instalei o Oracle, pois quero aprender ele) e atualizei o Eclipse para a versão Oxygen, pois estava com alguns problemas de resolução no Linux com a versão Neon.

Refiz as classes e deu certo, a única mudança que fiz, foi mais ou menos o que o @gui.oliveira92 falou. Eu deixei para receber como parâmetro um objeto Date, deixei o título do método assim:

public void setBirthday(Date date);

Quando eu passo o paramêtro eu utilizado o método “of” da classe Date:

java.sql.Date.of(“1991-12-21”); – Que aceita uma String como argumento e retorna um Date.

O que salvou no banco foi “91-DEC-21”, depois eu tento mudar isso.