Estou ultilizando o componente JXDatePicker na minha aplicação para seleção de data porém no modo de edição quando retorno uma data do banco ele seta pra mim a data atual GMT. Já fiz a formatação “dd/MM/yyy” e também converti para tipo date. Alguem sabe dizer se existe alguma propriedade do componente ou então outro método que insira a data correta conforme está no banco de dados. Estou ultilizando o metodo .setDate(data).
Bom iniciei o trabalho com o JXDatePicker a pouco tempo, porém espero ajudar com esse pouco conhecimento.
Estou desenvolvendo uma aplicação que utiliza a data pega com JXDatePicker e grava a data em uma base MySQL, para isso criei uma rotina para converter a data do formato GMT (quando vc dá um getDate) para o formato do banco.
O que precisa fazer e o seguinte.
Pegar a data no formato GMT e converter para o formato em que seu banco trabalha. Eu fiz dessa forma:
publicStringformDataJava(Datedata){/* Função para formatação do campo DATE do JAVA converte o valor default * para dd/MM/yyyy utilizado nos campos jxDate do SwingX *///Define o formato da data SimpleDateFormatdataFormatada=newSimpleDateFormat("dd/MM/yyyy");returndataFormatada.format(data);//Retorna a data formatada }
No formato da data “SimpleDateFormate” você pode alterar o formato de “dd/MM/yyyy” para outro formato desejado.
Espero ter colaborado.
Abraços
G
guilhermemachado
Andrei,
A parte da inserção no banco (captura atraves do getDate) já consegui implemetar normalmente. A dúvida é referente ao modo de visualização de uma data diferente da atual. Por exemplo a data de nascimento que está gravada no banco por exemplo 01-01-1981 quando dou um setDate ele está informando como valor a data atual, ou seja não está validando minha data retornanda do banco no componente . Estou usando postgresql.
obrigado
Guilherme
A
AndreiLS
Opa Guilherme!
Deixa eu ver se entendi…
pegando a data do JxDatePicker já está oks.
Convertendo a data do formato
Data padrão JXDATEPICKER (getDate) vem = Tue Nov 18 00:00:00 GMT-03:00 2008
Data convertida para formato “dd/MM/yyyy” = 18/11/2008 (cfme exemplo anterior)
Data de dd/mm/yyyy para formato Date = Tue Nov 18 00:00:00 GMT-03:00 2008 (vou dar meu exemplo abaixo)
Então para que o JXDatePicker exiba a data que vem do banco vc deve converter a data de 01-01-1981 para o formato:
Thu Jan 01 00:00:00 GMT-03:00 1981
Ai quando der um setDate vc irá passar esse formato (Date) ao invés de String.
Tenta assim:
“Essa foi a forma que fiz para converter a data String para o formato Date com certeza existem formas melhores de se fazer…”
publicDateformDataStrgToJava(Stringdata){/* Função de conversão de uma data do tipo STRING dd-MM-yyyy para formato * date do java.util */DateFormatformatter=newSimpleDateFormat("dd-MM-yyyy");//Formato da data que virá do bancoDatedate=null;try{date=(Date)formatter.parse(data);//convertendo o formato para Date}catch(ParseExceptionex){System.out.println(ex);}returndate;}
Andrei,
Foi mais fácil que imaginava… a formatação é feita diretamente pelo componente com o método: setFormats(new String [] {“dd/MM/yyyy”}). Ai eu posso passar a data direta retornada do banco do tipo Date “yyyy-MM-dd” que ele trata do resto.
obrigado
Guilherme
R
Rguilherme
Cara tenta assim:
//Captura data do banco e converte para o formato dd/MM/yyyyStringauxData=aux.getData();Datedata=null;try{data=newSimpleDateFormat(“yyyy-MM-dd”).parse(auxData);}catch(ParseExceptionex){Logger.getLogger(JInternalFrame.class.getName()).log(Level.SEVERE,null,ex);}StringdataQueVemDoBanco=newSimpleDateFormat(“dd/MM/yyyy”).format(data);
// Converte a data de String para DateDateauxData01=null;SimpleDateFormatsimpleDateFormat=newSimpleDateFormat("dd/mm/yyyy");try{auxData01=simpleDateFormat.parse(dataQueVemDoBanco);}catch(ParseExceptione){// TODO Auto-generated catch blocke.printStackTrace();}// Seta a data convertida para o componete JXDatePickergetJXDatePicker().setDate(auxData01);