Java.text.parseexception unparseable date

5 respostas
B

Bom dia galera, estou com um erro na conversão da data no método que eu criei para listar as informações. Mas o o estranho e que antes de iniciar a camada Web a data esta funcionando.

Segue o método getLista() utilizado:

public List<Contato> getLista() {

		try {

			PreparedStatement stmt = this.conn
					.prepareStatement("select * from contatos");
			ResultSet rs = stmt.executeQuery();

			List<Contato> contatos = new ArrayList<Contato>();

			while (rs.next()) {
				// criando o objeto contato
				Contato contato = new Contato();
				contato.setNome(rs.getString("nome"));
				contato.setEmail(rs.getString("email"));
				contato.setEndereco(rs.getString("endereco"));
				contato.setDataFormatada(rs.getString("dataNascimento"));

				contatos.add(contato);
			}

			rs.close();
			stmt.close();

			return contatos;

		} catch (Exception e) {
			throw new DaoException(e);
		}

	}

A conversão da data esta no meu DTO:

public String getDataFormatada(){
		SimpleDateFormat formatado = new SimpleDateFormat("dd/MM/yyyy");
		String dataFormat = formatado.format(dataNascimento);
		return dataFormat;
	}
	public Date getDataNascimento() {
		return this.dataNascimento;
	}
	public Date setDataFormatada(String dataNascimento){
		try {
			SimpleDateFormat formatado = new SimpleDateFormat("yyyy/MM/dd");
			Date dataFormat = formatado.parse(dataNascimento);
			return dataFormat;
			
		} catch (ParseException e) {
			e.printStackTrace();
		}
		return null;
	}
	public void setDataNascimento(String dataNascimento) {
		this.dataNascimento = setDataFormatada(dataNascimento);
	}

5 Respostas

B

Segue o erro:

java.text.ParseException: Unparseable date: "2012-02-28"
	at java.text.DateFormat.parse(Unknown Source)
	at br.com.caelum.modelo.Contato.setDataFormatada(Contato.java:59)
	at br.com.caelum.dao.ContatoDao.getLista(ContatoDao.java:68)
	at org.apache.jsp.lista_002dcontatos_jsp._jspService(lista_002dcontatos_jsp.java:81)
	at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
	at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
	at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
	at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:225)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
R

Amigão, seu método usa o formato ‘yyyy/MM/dd’ com barras e a data que vem usa traços/hífens ‘yyyy-MM-dd’

B

Era isso mesmo, porém agora estou recebendo um erro no método getLista(). E ao executar o Debug reparei que que na minha conversão da data o return esta nulo.

Método getLista():

public List<Contato> getLista() {

		try {

			PreparedStatement stmt = this.conn
					.prepareStatement("select * from contatos");
			ResultSet rs = stmt.executeQuery();

			List<Contato> contatos = new ArrayList<Contato>();

			while (rs.next()) {
				// criando o objeto contato
				Contato contato = new Contato();
				contato.setNome(rs.getString("nome"));
				contato.setEmail(rs.getString("email"));
				contato.setEndereco(rs.getString("endereco"));
				contato.setDataNascimento(rs.getString("dataNascimento"));

				contatos.add(contato);
			}

			rs.close();
			stmt.close();

			return contatos;

		} catch (Exception e) {
			throw new DaoException(e);
		}

	}

Convertendo a data:

public Date setDataFormatada(String dataNascimento){
		try {
			SimpleDateFormat formatado = new SimpleDateFormat("yyyy-MM-dd");
			Date dataFormat = formatado.parse(dataNascimento);
			return dataFormat;
			
		} catch (ParseException e) {
			e.printStackTrace();
		}
		return null;
	}
	public void setDataNascimento(String dataNascimento) {
		this.dataNascimento = setDataFormatada(dataNascimento);
	}
R

Isso aí já é problema pra outro tópico não é não? a dúvida desse aqui já foi resolvida.

Só deixo uma coisa pra você pensar, por que o seu campo dataNascimento é String e não Date?

B

Vlw!!!

Criado 3 de setembro de 2012
Ultima resposta 3 de set. de 2012
Respostas 5
Participantes 2