Erro ao converter de string para time

3 respostas
tpiardi

Esse código

String dataS = request.getParameter("data");
String horaS = request.getParameter("hora");
String duracaoS = request.getParameter("duracao");


        SimpleDateFormat formatador = new SimpleDateFormat("hh:mm");
        SimpleDateFormat formatador1 = new SimpleDateFormat("dd/MM/yyyy");

            data = (Date)formatador1.parse(dataS);
            hora = (Time)formatador.parse(horaS);
            duracao = (Time) formatador.parse(duracaoS);

Está me retornando esse erro:

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

org.apache.jasper.JasperException: An exception occurred processing JSP page /Cadastro2.jsp at line 63

60:         SimpleDateFormat formatador1 = new SimpleDateFormat(dd/MM/yyyy);

61:

62:             data = (Date)formatador1.parse(dataS);

63:             hora = (Time)formatador.parse(horaS);

64:             duracao = (Time) formatador.parse(duracaoS);

65:    }

66:
Stacktrace:

org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:553)

org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:457)

org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)

org.apache.jasper.servlet.JspServlet.service(JspServlet.java:333)

javax.servlet.http.HttpServlet.service(HttpServlet.java:722)

org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)

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

org.apache.jsp.Cadastro2_jsp._jspService(Cadastro2_jsp.java:132)

org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)

javax.servlet.http.HttpServlet.service(HttpServlet.java:722)

org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:419)

org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)

org.apache.jasper.servlet.JspServlet.service(JspServlet.java:333)

javax.servlet.http.HttpServlet.service(HttpServlet.java:722)

org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)

Alguém faz idéia do que pode estar acontecendo?

Obrigado

3 Respostas

drsmachado

É um erro de cast, indicado pois você está tentando “castear” o retorno de um método que pertence à classe Date do pacote java.util em um objeto da classe Time do pacote java.sql.

Você precisa criar variáveis java.util.Date e então fazer a conversão para java.sql.Date separadamente.

tpiardi

Obrigado drsmachado,

Mas eu sou bem novato, e não saquei…

Como faço pra converter o string em Time então?

drsmachado

tpiardi:
Obrigado drsmachado,

Mas eu sou bem novato, e não saquei…

Como faço pra converter o string em Time então?


Você não consegue fazer com que uma variável Integer aceite o resultado de um método cujo retorno é uma String.
Mesmo que force o cast, a JVM não entende isso.

Existem vários tipos de data em java (java.util.Date, java.sql.Date, Calendar, GregorianCalendar, etc).

Como eu disse anteriormente, você precisa ter as variáveis java.util.Date para receber a primeira conversão, uma vez que o método parse(String) da classe SimpleDateFormat apenas retorna java.util.Date.

Não estou certo sobre a classe time do java.sql, mas a java.sql.Date aceita como método construtor, um que recebe como argumento um long. a classe java.util.Date possui o método getTime, que retorna long. Sendo assim:

DateFormat df = new SimpleDateFormat("dd/MM/yyyy");
		String strTime = "09/10/2011";
		try {
			java.util.Date utilDate = df.parse(strTime);
			java.sql.Time sqlTime = new Time(utilDate.getTime());
		} catch (ParseException e) {
			e.printStackTrace();
		}

Sugiro, veementemente, que você estude, tente entender o código acima e perceba o que estava errado no teu.

Criado 8 de outubro de 2011
Ultima resposta 9 de out. de 2011
Respostas 3
Participantes 2