Tratando datas

7 respostas
B

Olá,

Preciso fazer uma consulta usando página web para passar uma data como condição para o “select”.
O problema é que para eu fazer a consulta tenho que usar a data no formato MM/DD/YYYY. Gostaria que a data fosse digitada na página web no formato DD/MM/YYYY e que depois antes de executar o select ela fosse convertida para MM/DD/YYYY. Até porque na query Sql o uso do formato DD/MM/YYYY não funciona.

Teria como fazer isso. Usando o trecho de código abaixo

Att

Bruno

public void doPost ( HttpServletRequest request,

HttpServletResponse response )

throws ServletException, IOException

{

StringBuffer buf = new StringBuffer();

//aqui a data é passada do browser

String pedido = request.getParameter( pedido );
try {
       String query = "SELECT USERWEB, DTCADASTRO, SENHA      LOGIN WHERE DTCADASTRO='" + pedido + "'";

     Statement st = c.createStatement();
     ResultSet rs = st.executeQuery( query );

7 Respostas

leonardom
String pedido = request.getParameter( "pedido" ); 

SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy");

pedido = sdf.format(pedido);
B

Leonardom,

deu erro na linha 34 do código e a linha correspondente é esta:

pedido = sdf.format(pedido);

Erro:


500 Servlet Exception

java.lang.IllegalArgumentException: Cannot format given Object as a Date

at java.text.DateFormat.format(DateFormat.java:279)

at java.text.Format.format(Format.java:133)

at Conpedidodata.doPost(Conpedidodata.java:34)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:165)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:103)

at com.caucho.server.dispatch.ServletFilterChain.doFilter(ServletFilterChain.java:105)

at com.caucho.server.cache.CacheFilterChain.doFilter(CacheFilterChain.java:190)

at com.caucho.server.webapp.WebAppFilterChain.doFilter(WebAppFilterChain.java:165)

at com.caucho.server.dispatch.ServletInvocation.service(ServletInvocation.java:221)

at com.caucho.server.http.HttpRequest.handleRequest(HttpRequest.java:253)

at com.caucho.server.port.WorkerThread.run(WorkerThread.java:129)

at java.lang.Thread.run(Thread.java:536)

leonardom

Desculpe esqueci que vc deve converter para data

pedido = sdf.format( sdf.parse(pedido) );

Acho que agora deve funcionar

B

Não compilou, primeiro deu o seguinte erro:

Conpedidodata.java:34: unreported exception java.text.ParseException; must be caught or declared to be thrown
pedido = sdf.format( sdf.parse(pedido) );
^
1 error

Att

Bruno

massardi

Tente mudar a assinatura do metodo para public void doPost ( HttpServletRequest request,
HttpServletResponse response )
throws ServletException, IOException, ParseException

Esta exceção deve ser tratada.

B

De erro tbém.

Conpedidodata.java:27:
doPost(javax.servlet.http.HttpServletRequest,javax.servle
t.http.HttpServletResponse) in Conpedidodata cannot override doPost(javax.servle
t.http.HttpServletRequest,javax.servlet.http.HttpServletResponse) in javax.servl
et.http.HttpServlet; overridden method does not throw java.text.ParseException
public void doPost ( HttpServletRequest request,
^
1 error

Att

Bruno

cancao

“brsna”:
De erro tbém.

Conpedidodata.java:27:
doPost(javax.servlet.http.HttpServletRequest,javax.servle
t.http.HttpServletResponse) in Conpedidodata cannot override doPost(javax.servle
t.http.HttpServletRequest,javax.servlet.http.HttpServletResponse) in javax.servl
et.http.HttpServlet; overridden method does not throw java.text.ParseException
public void doPost ( HttpServletRequest request,
^
1 error

Att

Bruno


Bruno, coloque o trecho de codigo sugerido entre um try catch para tratar a ParseException. Assim:

String pedido = null;
try {
   pedido = request.getParameter( "pedido" );

   SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy");

   pedido = sdf.format( sdf.parse(pedido) );
} catch(java.text.ParseException ex) {
   ex.printStackTrace();
} 
// continua o codigo usando pedido na query...

Até.

Criado 24 de novembro de 2003
Ultima resposta 24 de nov. de 2003
Respostas 7
Participantes 4