Converter um campo de um Text Field em Date

6 respostas
swing

Bom dia pessoal,
Estou tentando converter um campo extraído de um Text Field em um com formato de data e não consigo.

mf.tfMov.getText()

mf é a referência à classe que está o TextField.
tfMov é o campo.

Eu já tentei fazer a conversão de duas maneiras:

  1. Date.valueOf(mf.tfMov.getText()
    

Assim aparece a seguinte mensagem:

2)Date.parse(mf.tfMov.getText()
Dessa forma o eclipse sugere:

onde o campo que estou tratando é o primeiro atributo do método .

Alguém sabe como resolver esse problema? Desde já agradeço qualquer ajuda a respeito.

6 Respostas

Marky.Vasconcelos

o método java.util.Date.parse(String arg0) retorna um long e não um objeto Date como você esperava.

swing

Tentei fazer o exemplo e apareceu essa msg de erro:

então eu alterei o código assim:

SimpleDateFormat fmt = new SimpleDateFormat("dd/MM/yyyy");  
Date data = (Date) fmt.parse(mf.tfMov.getText());

mas não deu certo, apareceu a seguinte msg:

swing

O problema é que esse campo está sendo comparado a um outro campo data que está em outro método e este outro campo é um valor trazido de uma Stored Procedure (Oracle) e continua aparecendo a msg de erro:

Então eu fui no outro método:

public int getMoradorVila(Date data, int emp, int mat) {
	int valor = 0;
	try {
		CallableStatement cstmt = (CallableStatement) Conexao.getConnection().prepareCall(
						"{CALL " + "package.procedure(?,?,?)}");
		cstmt.registerOutParameter(1, Types.INTEGER);
		cstmt.setDate(1, data);
		cstmt.setInt(2, emp);
		cstmt.setInt(3, mat);
		cstmt.execute();
		
		valor = cstmt.getInt(1);
		cstmt.close();
	} catch (Exception sqlex) {
		Tratamentos.tratamentos(sqlex);
	}
	return valor;
}

Aqui está aparecendo um erro na linha 7, então eu alterei a e ela passou a ficar assim:

cstmt.setDate(1, (java.sql.Date) data);

Assim não aparece mais a msg de erro, mas quando eu compilo continua aparecendo a msg:

javer
swing:
O problema é que esse campo está sendo comparado a um outro campo data que está em outro método e este outro campo é um valor trazido de uma Stored Procedure (Oracle) e continua aparecendo a msg de erro:
java.lang.ClassCastException: java.util.Date cannot be cast to java.sql.Date
Então eu fui no outro método:
public int getMoradorVila(Date data, int emp, int mat) {
	int valor = 0;
	try {
		CallableStatement cstmt = (CallableStatement) Conexao.getConnection().prepareCall(
						"{CALL " + "package.procedure(?,?,?)}");
		cstmt.registerOutParameter(1, Types.INTEGER);
		cstmt.setDate(1, data);
		cstmt.setInt(2, emp);
		cstmt.setInt(3, mat);
		cstmt.execute();
		
		valor = cstmt.getInt(1);
		cstmt.close();
	} catch (Exception sqlex) {
		Tratamentos.tratamentos(sqlex);
	}
	return valor;
}
Aqui está aparecendo um erro na linha 7, então eu alterei a e ela passou a ficar assim:
cstmt.setDate(1, (java.sql.Date) data);

Assim não aparece mais a msg de erro, mas quando eu compilo continua aparecendo a msg:

java.lang.ClassCastException: java.util.Date cannot be cast to java.sql.Date

Faça isso:
ps.setObject(++index, new java.sql.Date(item.getDataCadastro().getTime()));

// No seu caso
cstmt.setDate(1, new java.sql.Date(data.getTime()));
everson_z
SimpleDateFormat fmt = new SimpleDateFormat("dd/MM/yyyy");
Date data = fmt.parse(mf.tfMov.getText());
everson_z

Se você enviar uma String no padrão 25/12/2007 vai funcionar

:shock:

java.util.Date cannot be cast to java.sql.Date

O import deve ser do java.util.Date e você esta com o java.sql.Date, nada de sql, é util

SimpleDateFormat fmt = new SimpleDateFormat("dd/MM/yyyy");    
 Date data = (Date) fmt.parse(mf.tfMov.getText());
Criado 6 de dezembro de 2007
Ultima resposta 6 de dez. de 2007
Respostas 6
Participantes 4