DateFormat.parse problems

I'm trying to convert a String to Date. When I run my software I get this mistake, which is obvious I'm parsing it badly:

The mistake is this:

java.text.ParseException: Unparseable date: "2014-02-07 00:00:00"
   at java.text.DateFormat.parse(DateFormat.java:357)
   at com.parkinsoncontrol.WsParkinsonControl.consultConfiguration(WsParkinsonControl.java:200)
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
   at java.lang.reflect.Method.invoke(Method.java:601)
   at org.glassfish.webservices.InstanceResolverImpl$1.invoke(InstanceResolverImpl.java:143)
  at com.sun.xml.ws.server.InvokerTube$2.invoke(InvokerTube.java:150)
  at com.sun.xml.ws.server.sei.EndpointMethodHandler.invoke(EndpointMethodHandler.java:261)
  at com.sun.xml.ws.server.sei.SEIInvokerTube.processRequest(SEIInvokerTube.java:100)
  at com.sun.xml.ws.api.pipe.Fiber.__doRun(Fiber.java:641)
  at com.sun.xml.ws.api.pipe.Fiber._doRun(Fiber.java:600)
  at com.sun.xml.ws.api.pipe.Fiber.doRun(Fiber.java:585)
  at com.sun.xml.ws.api.pipe.Fiber.runSync(Fiber.java:482)
  at com.sun.xml.ws.api.pipe.helper.AbstractTubeImpl.process(AbstractTubeImpl.java:116)
  at org.glassfish.webservices.MonitoringPipe.process(MonitoringPipe.java:142)
  at com.sun.xml.ws.api.pipe.helper.PipeAdapter.processRequest(PipeAdapter.java:119)
  at com.sun.xml.ws.api.pipe.Fiber.__doRun(Fiber.java:641)
  at com.sun.xml.ws.api.pipe.Fiber._doRun(Fiber.java:600)
  at com.sun.xml.ws.api.pipe.Fiber.doRun(Fiber.java:585)
  at com.sun.xml.ws.api.pipe.Fiber.runSync(Fiber.java:482)
  at com.sun.xml.ws.api.pipe.helper.AbstractTubeImpl.process(AbstractTubeImpl.java:116)
  at com.sun.enterprise.security.webservices.CommonServerSecurityPipe.processRequest(CommonServerSecurityPipe.java:212)
  at com.sun.enterprise.security.webservices.CommonServerSecurityPipe.process(CommonServerSecurityPipe.java:144)
  at com.sun.xml.ws.api.pipe.helper.PipeAdapter.processRequest(PipeAdapter.java:119)
  at com.sun.xml.ws.api.pipe.Fiber.__doRun(Fiber.java:641)
  at com.sun.xml.ws.api.pipe.Fiber._doRun(Fiber.java:600)
  at com.sun.xml.ws.api.pipe.Fiber.doRun(Fiber.java:585)
  at com.sun.xml.ws.api.pipe.Fiber.runSync(Fiber.java:482)
  at com.sun.xml.ws.server.WSEndpointImpl$2.process(WSEndpointImpl.java:314)
  at com.sun.xml.ws.transport.http.HttpAdapter$HttpToolkit.handle(HttpAdapter.java:608)
  at com.sun.xml.ws.transport.http.HttpAdapter.handle(HttpAdapter.java:259)
  at com.sun.xml.ws.transport.http.servlet.ServletAdapter.handle(ServletAdapter.java:162)
  at org.glassfish.webservices.JAXWSServlet.doPost(JAXWSServlet.java:145)
  at javax.servlet.http.HttpServlet.service(HttpServlet.java:754)
  at javax.servlet.http.HttpServlet.service(HttpServlet.java:847)
  at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1539)
  at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:281)
  at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
  at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:655)
  at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:595)
  at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:98)
  at com.sun.enterprise.web.PESessionLockingStandardPipeline.invoke(PESessionLockingStandardPipeline.java:91)
  at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:162)
  at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:330)
  at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:231)
  at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:174)
  at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:828)
  at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:725)
  at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1019)
  at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:225)
  at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137)
  at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104)
  at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90)
  at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79)
  at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54)
  at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59)
  at com.sun.grizzly.ContextTask.run(ContextTask.java:71)
  at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532)
  at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513)
  at java.lang.Thread.run(Thread.java:722)

And the code which I'm developing is this:

DateFormat formatter; 
Date date ; 
formatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss",Locale.ENGLISH);
    try {
        Date parsed = formatter.parse(dateI);
        System.out.append("La fecha es:"+parsed);
    } catch (ParseException ex) {
        Logger.getLogger(WsParkinsonControl.class.getName()).log(Level.SEVERE, null, ex);
    }

So, what I'm doing wrong?. Thanks so much and regards.

Jon Skeet
people
quotationmark

This is your value:

2014-02-07 00:00:00

This is your format:

yyyy-MM-dd'T'HH:mm:ss

They don't match. Your format has a T in the middle - your value doesn't.

If all your values have a space instead of a T, just use:

yyyy-MM-dd HH:mm:ss

If some values have a T and some don't, you'll need to use multiple DateFormat instances.

Additionally, you should consider which time zone you want to use when parsing. Currently you're just using the system default time zone. Is that the actual time zone of the values?

people

See more on this question at Stackoverflow