[Resolvido]Java salvando data com dia atrasado

Pessoal, estou com problemas na hora de salvar uma data que esta dentro de um <p:inputMask/>. Toda data que salvo no mysql é salvada com um dia de atraso, o código que uso para a conversão da data é essa:

java.sql.Date data_nascimento=new java.sql.Date(cliente.getData_nascimento().getTime());

[quote=Luciano_Lopes]Pessoal, estou com problemas na hora de salvar uma data que esta dentro de um <p:inputMask/>. Toda data que salvo no mysql é salvada com um dia de atraso, o código que uso para a conversão da data é essa:

java.sql.Date data_nascimento=new java.sql.Date(cliente.getData_nascimento().getTime()); [/quote]
verfique se não é um problema com horário de verão da JVM. imprima uma data qualquer no console:

System.out.println(new Date());

Quando voce da um println aparece o que ?

caso seja problema de timezone, mesmo achando que não é pela diferença de um dia, faça o seguinte

TimeZone.setDefault(TimeZone.getTimeZone("America/Sao_Paulo"));
1 curtida

Criei esse código para testes e a data ta saindo normal(16/11/2011):

TimeZone.setDefault(TimeZone.getTimeZone("America/Sao_Paulo")); System.out.println(new Date());
A manioulação de datas no jsf é diferente?

Não no jsf é igual.
no seu bean vc esta utilizando Date né?

Voce esta usando JPA ou JDBC, o problema deve estar ao passar o parametro via banco se voce estiver utilizando JDBC tente passar o atributo como char

Ex:

new SimpleDateFormat('yyyy-MM-dd').format(new Date())

[quote=Luciano_Lopes]Criei esse código para testes e a data ta saindo normal(16/11/2011):

TimeZone.setDefault(TimeZone.getTimeZone("America/Sao_Paulo")); System.out.println(new Date());
A manioulação de datas no jsf é diferente?[/quote]

no jsf dentro da tag que vc que exibir coloque


<f:convertDateTime pattern="dd/MM/yyy"
				locale="pt_BR"
				timeZone="America/Sao_Paulo"/>

Funcionou 100%, só uma duvida agora: porque tenho que citar o timezone e o locate?Não da no mesmo não colocar um dos 2?

Da no mesmo nao pq dependendo da configuracao que vc colocar, ele vai avancar ou atrasar (GMT)