Capturando data no JCalendar

8 respostas
D

Galera seguinte, estou usando a biblioteca JCalendar, para pegar data.

Só que estou tendo um problema com a formatação desta data, já olhei no forum sobre DateFormat, SimpleDateFormat, mas ainda continuo não tendo resposta para meu problema, não sei se é lezeira minha, mas não estou conseguindo tratar a data.

vou colocar aqui trechos do código e se alguém puder usar a biblioteca JCalendar para pegar a data e fazer a formatação para ver seria de grande ajuda.

tratamento.setFim(guicontrol.dataFim.getDate()); // aqui pego a data
System.out.println(guicontrol.dataFim.getDate()); // imprimi : Tue May 25 10:21:46 BRT 2010

Como disse já tentei usar o DateFormat.MEDIUM para sair somente 25/05/10. Também já tentei usar o SimpleDateFormat para sair: “dd/MM/yyyy”.

Mas até agora não consegui fazer a formatação desta data.

Obrigado pela ajuda.

8 Respostas

A

com o SimpleDateFormat você não conseguiu?

Tente assim e me dê um retorno por favor:

SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
String data = sdf.format(guicontrol.dataFim.getDate());

isso deveria funcionar

D

Resolveu em partes, por que eu ainda preciso da data no formato de date.

obrigado.

igor_jua

Não entendi! E você já não tinha um Date inicialmente?

D

Seguinte galera, eu resolvi meu problema com a ajuda de vcs do GUJ, então vou postar aqui a solução.

Eu estava tendo problema para colocar no campo data na minha tabela de banco de dados. Precisava primeiro transformar a data no padrão do banco de dados. Consegui fazendo a sugestão postada em cima.

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        String data = sdf.format(guicontrol.dataFim.getDate()); // pego e transformo a data no padrão acima
        Date date = (Date) sdf.parse(data); // aqui se quiser voltar para o tipo Date

Só que isto eu estava fazendo no set do objeto que eu queria colocar no banco, quando fui colocar mesmo no banco, tive que fazer novamente outra conversão. Que no meu caso ficou da seguinte forma:

stmt.setDate(3, (java.sql.Date.valueOf(sdf.format(tratamento.getFim()))));

Assim eu coloquei no padrão date sql e deu para inserir a data no banco de dados. Resolvi colocar a solução completa, por que procurando aqui no forum sempre achava metade da solução e sempre ficava confuso por que não dava certo, então creio eu que se mais alguém estiver com problemas de inserir data no banco de dados é só seguir esta solução. Sei que não é a mais bunita, mas está inserindo no banco de dados.

Obrigado a todos que ajudaram.

A

vou te ajudar com uma solução melhor ainda então doug, já que você tem que sempre transformar a data e depois “destransformar” crie um método que receba um valor String e receba um String (o recomendado é Date, só que isso você verá mais pra frente ^^). Por exemplo:

import java.text.SimpleDateFormat;
import java.util.Date;

public class Funcoes {

	public String transformaParaMySQL(String data){
		Date data_recep = null;  
		String data_formatada = null;  
		try{  
			data_recep = new SimpleDateFormat("dd/MM/yyyy").parse(data);    
			data_formatada = new SimpleDateFormat("yyyy-MM-dd").format(data_recep);
			
			return data_formatada;
		}catch( java.text.ParseException e ){  
			System.out.println("erro ao converter data do formato brasileiro para formato do mysql. Vide classe Funções em br.com.bb.bean.");
			e.printStackTrace();  
		}
		return null;
	}
	
	public String transformaParaPadraoBrasileiro(String data){
		Date data_recep = null;  
		String data_formatada = null;  
		try{  
			data_recep = new SimpleDateFormat("yyyy-MM-dd").parse(data);    
			data_formatada = new SimpleDateFormat("dd/MM/yyyy").format(data_recep);
			
			return data_formatada;
		}catch( java.text.ParseException e ){  
			System.out.println("erro ao converter data do formato mysql para formato brasileiro. Vide classe Funções em br.com.bb.bean.");
			e.printStackTrace();  
		}
		return null;
	}
}

com isso você irá salvar seu tempo de conversão. Esses 2 métodos transformar o seu String no formato apropriado. Como utilizá-lo:

Funcoes f = new Funcoes();
//para pegar seu valor que é String
tratamento.setFim(f.transformaParaMySQL(guicontrol.dataFim.getDate()));

//para retornar seu valor já que você trata data como String -- aconselhado 
//utilizar o mesmo valor primitivo já que a data que você utiliza é String
f.transformaParaPadraoBrasileiro(tratamento.getFim());

assim toda vez que você necessitar transformar seu String em Date, é só invocar estes 2 métodos
mais reforçando, utilize sempre Date como variável quando trabalhar com data, dá bem menos dor de cabeça

té+

D

Olá andre.froes, tudo bem!?

Na verdade eu só postei a solução para o problema, o que na realidade eu iria implementar aqui, com certeza é com função.

Mas mesmo assim obrigado por colocar aí esta função, assim a gente fecho ae o problema e com certeza será útil para os que poderão um dia ter o mesmo problema.

Obrigado pelo ajuda!

d34d_d3v1l

Parabens a todos, resolvi meu problema neste tópico… Porém, estou usando a data como string mesmo…

Em questões de BANCO DE DADOS, tem problema eu setar um campo de data como String?

Abraços

rafaelshock

galera estou com o mesmo problema, tentei fazer isso, mas não consigui… to com muita dificuldade nisso alguém pode me ajudar?

tbm estou utlizando o JCalender

fiz dessa forma, mas não sei se está correto…

cliente.setData_nascimento((Calendar) ccbdatanasc.getSelectedItem());
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");  
            String data = sdf.format(cliente.getData_nascimento()); // pego e transformo a data no padrão acima  
        try {
            Date date = (Date) sdf.parse(data); // aqui se quiser voltar para o tipo Date
        } catch (ParseException ex) {
            Logger.getLogger(FrmaddClientes.class.getName()).log(Level.SEVERE, null, ex);
        }

só que está retornando o seguinte erro…

Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException: Cannot format given Object as a Date
	at java.text.DateFormat.format(DateFormat.java:301)
	at java.text.Format.format(Format.java:157)
	at br.com.banhotosa.View.FrmaddClientes.btOkActionPerformed(FrmaddClientes.java:302)
	at br.com.banhotosa.View.FrmaddClientes.access$200(FrmaddClientes.java:24)
	at br.com.banhotosa.View.FrmaddClientes$3.actionPerformed(FrmaddClientes.java:176)
	at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
	at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
	at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
	at javax.swing.JToggleButton$ToggleButtonModel.setPressed(JToggleButton.java:308)
...

desde de já muito obrigado!

Criado 25 de maio de 2010
Ultima resposta 18 de nov. de 2013
Respostas 8
Participantes 5