如何将"2012-03-04 00:00:00.0"转换为日期格式为"dd-mm-yyyy HH:mm:ss"使用Java

Shi*_*esh 7 java jdbc

我有一个日期格式,我从数据库中获取并是一个字符串类型.它存储的值类似于"2012-03-04 00:00:00.0"但我已将SimpleDateFormat声明为"dd-MMM-yyyy HH:mm:ss",这在我的项目中是必需的.现在每当我从数据库中检索一些带有日期的数据时,我得到一个解析异常,其日志如下所示.

java.text.ParseException:无法解析的日期: "2012-03-04 00:00:00.0" 在java.text.DateFormat.parse(来源不明)在com.tcs.tool.iris.aep.selfProfile.dao.AepSelfProfileDaoImpl $ 1 .setValues(AepSelfProfileDaoImpl.java:1188)在org.springframework.jdbc.core.JdbcTemplate $ 4.doInPreparedStatement(JdbcTemplate.java:892)在org.springframework.jdbc.core.JdbcTemplate $ 4.doInPreparedStatement(JdbcTemplate.java:1)在org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:586)在org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:614)在org.springframework.jdbc.core.JdbcTemplate.batchUpdate( JdbcTemplate.java:883)在com.tcs.tool.iris.aep.selfProfile.dao.AepSelfProfileDaoImpl.insertDataIntoActionItems(AepSelfProfileDaoImpl.java:1174)在com.tcs.tool.iris.aep.selfProfile.service.AepSelfProfileServiceImpl.insertDataIntoActionItems( AepSelfProfileServiceImpl.java:214)在com.tcs.tool.iris.aep.selfProfile.controller.UpdateProgressController.onSubmit(UpdateProgressControll)er.java:48)在org.springframework.web.servlet.mvc.SimpleFormController.processFormSubmission(SimpleFormController.java:272)在org.springframework.web.servlet.mvc.AbstractFormController.handleInvalidSubmit(AbstractFormController.java:675)在组织.springframework.web.servlet.mvc.AbstractFormController.handleRequestInternal(AbstractFormController.java:275)在org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.java:153)在org.springframework.web.servlet.mvc .SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:48)在org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:790)在org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:719)在org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:644)在org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:560)在javax.servlet.http.HttpServlet.service(的HttpServlet. java的:637 )在javax.servlet.http.HttpServlet.service(HttpServlet.java:717)在org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)在org.apache.catalina.core.ApplicationFilterChain.doFilter( ApplicationFilterChain.java:206)在org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)在org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)在org.apache.catalina .core.StandardHostValve.invoke(StandardHostValve.java:127)在org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)在org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109 )在org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)在org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:857)在org.apache.coyote.http11.Http11Protocol $ Http11ConnectionHandler.process(Http11Protocol.java:588)at org.apache.tomcat.util.net.JIoEndpoint $ Worker.run(JIoEndpoi)nt.java:489)at java.lang.Thread.run(Unknown Source)

请帮我弄清楚这是怎么回事.以及如何将其转换为正确的格式.

我得到异常的代码片段如下: -

SimpleDateFormat sdf = new SimpleDateFormat(
                                "dd-MMM-yyyy HH:mm:ss");
                        Calendar currenttime = Calendar.getInstance();
                        java.util.Date currentdate = currenttime.getTime();
                        String currentDateInsert = sdf.format(currentdate);
                        CommentNActionItem commentAndAction = commentActionItem
                                .get(i);
                        java.util.Date datefromDb = null;
                        try {
                            @SuppressWarnings("unused")
                            Date dateF=sdf.parse(commentAndAction.getCreatedDate());
                            datefromDb = (java.sql.Date)sdf.parseObject(commentAndAction.getCreatedDate());
                        } catch (Exception e1) {
                            // TODO Auto-generated catch block
                            e1.printStackTrace();
Run Code Online (Sandbox Code Playgroud)

}

Ano*_*sse 18

转换日期字符串的过程非常简单.您可以定义输入格式,使用它来解析原始字符串,然后定义输出格式,并使用它将其转换回字符串.

我的印象是你试图通过重复使用相同的格式进行解析和输出来快捷方式?然后使用两种格式!

// Convert input string into a date
DateFormat inputFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.S");
Date date = inputFormat.parse(inputString);

// Format date into output format
DateFormat outputFormat = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss");
String outputString = outputFormat.format(date);
Run Code Online (Sandbox Code Playgroud)