2017-04-01 38 views
-2

我无法解析格式为“dd/MM/yyyy HH:mm:ss”的日期字符串为JODA LocalDateTime。无法解析格式为“dd/MM/yyyy HH:mm:ss”的日期字符串到JODA LocalDateTime

我得到以下异常: java.lang.IllegalArgumentException异常:无效的格式为: “2017年1月1日0时30分○○秒” 是在 “/ 01/2017○时30分00秒”

畸形

请帮我解决这个错误。

见下面我的代码:

public void calculateTOUValues(Date startDate, Date eDate, ArrayList<Double> csvDataPerChannel) { 

    DateTimeFormatter format1 = DateTimeFormat.forPattern("dd/MM/yyyy HH:mm:ss"); 

    SimpleDateFormat format01 = new SimpleDateFormat("dd/MM/yyyy"); 
    String startDateString = format01.format(startDate) + " 00:30:00"; //concatenate 00:30:00 
    String endDateString = format01.format(eDate) + " 00:00:00"; //concatenate 00:00:00 

    LocalDateTime strDate = LocalDateTime.parse(startDateString); //exception encountered at this line of code 
    LocalDateTime endDate = LocalDateTime.parse(endDateString); 
} 

我得到下面的异常运行这段代码:

输出:{严重:空java.lang.IllegalArgumentException异常:无效 格式:“01/01/2017 00:30:00“格式不正确”/ 01/2017 00:30:00“在 org.joda.time.format.DateTimeFormatter.parseLocalDateTime(DateTimeFormatter.java:854) at org.joda。 time.LocalDateTime.parse(LocalDateTime.java:168)在 org.joda.time.LocalDateTime.parse(LocalDateTime.java:157)在 module1.TOUCalculatorCore.calculateTOUValues(TOUCalculatorCore.java:135) 在 module1.LaunchTOUCalcTool.submitButtonActionPerformed(LaunchTOUCalcTool.java:807) 在模块1。 LaunchTOUCalcTool.access $ 900(LaunchTOUCalcTool.java:32) 在 module1.LaunchTOUCalcTool $ 10.actionPerformed(LaunchTOUCalcTool.java:418) 在 javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022) 在 的javax.swing .AbstractButton $ Handler.actionPerformed(AbstractButton.java:2348) at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402) 在 javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259) 在 javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252) 在java.awt.Component.processMouseEvent(成分。 java:6533)at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)at java.awt.Component.processEvent(Component.java:6298)at java.awt.Container.processEvent(Container.java: 2236)在 java.awt.Component.dispatchEventImpl(Component.java:4889)处 java.awt.Component.dispatchEvent java.awt.Container.dispatchEventImpl(Container.java:2294)(Component.java:4711)在 java.awt.LightweightDispatch er.retargetMouseEvent(Container.java:4888) 在 java.awt.LightweightDispatcher.processMouseEvent(Container.java:4525) 在java.awt.LightweightDispatcher.dispatchEvent(Container.java:4466) 在java.awt.Container中.dispatchEventImpl(Container.java:2280)at java.awt.Window.dispatchEventImpl(Window.java:2746)at java.awt.Component.dispatchEvent(Component.java:4711)at java.awt.EventQueue.dispatchEventImpl (EventQueue.java:758)at java.awt.EventQueue.access $ 500(EventQueue.java:97)at java.awt.EventQueue $ 3.run(EventQueue.java:709)at java.awt.EventQueue $ 3。在处运行(EventQueue.java:703) java.security.AccessController.doPrivileged(Native Method)java.security.ProtectionDomain $ JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80) at java.security。保护域$ javaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:90) at java.awt.EventQueue $ 4.run(EventQueue.java:731)at java.awt.EventQueue $ 4.run(EventQueue.java:729)at java。在 java.security.ProtectionDomain $ JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80) security.AccessController.doPrivileged(本机方法)在java.awt.EventQueue.dispatchEvent(EventQueue.java:728)在 java.awt.EventDispatchThread .pumpOneEventForFilters(EventDispatchThread.java:201) 在 java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116) 在 java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105) 在 java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) 在 java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93) 在java.awt.EventDispatchThread.run(EventDispatchThread.java:82) }

+0

请注意,人类只回答堆栈溢出的问题。机器还没有变得那么聪明。 –

+1

查看异常 - 日期和时间之间没有空格,解释它的值。这表明你的实际代码与你所显示的代码不一样。请提供[mcve]。 –

+0

此外,如果你已经*得到*开始日期和结束日期,并且只想要'LocalDateTime'值,为什么你格式化和解析呢?您应避免不必要的字符串转换。 –

回答

1

修复了指定格式的问题。下面的代码工作,:)

LocalDateTime strDate = LocalDateTime.parse(startDateString, 
DateTimeFormat.forPattern("dd/MM/yyyy HH:mm:ss")); 
    LocalDateTime endDate = LocalDateTime.parse(endDateString, 
DateTimeFormat.forPattern("dd/MM/yyyy HH:mm:ss")); 

感谢@thomas Klager

相关问题