【发布时间】:2015-08-26 01:21:50
【问题描述】:
无法使用 DateTimeFormatter 仅解析 LocalTime 变量的“时间”。尝试了几种不同的格式,但没有看到我缺少的内容(因为我使用的是 DateTimeFormatter,所以我需要一个日期组件,但我只使用 LocalDate 没有问题,文档说它支持 LocalTime)。
提前感谢任何帮助/链接识别导致异常的错误。
在此 SSCCE 中复制:
import java.awt.*;
import java.time.*;
import java.time.format.*;
public class SSCCE {
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable(){
@Override
public void run() {
String word = "";
word = "1200am";
// System.out.println(LocalTime.parse(word.toLowerCase(), DateTimeFormatter.ISO_LOCAL_TIME).toString());
System.out.println(LocalTime.parse(word.toLowerCase(), DateTimeFormatter.ofPattern("hhmma")).toString());
// System.out.println(LocalTime.parse(word.toLowerCase(), DateTimeFormatter.ofPattern("hmma")).toString());
// System.out.println(LocalTime.parse(word.toLowerCase(), DateTimeFormatter.ofPattern("HHmma")).toString());
// System.out.println(LocalTime.parse(word.toLowerCase(), DateTimeFormatter.ofPattern("Hmma")).toString());
// System.out.println(LocalTime.parse((CharSequence)word.toLowerCase(), DateTimeFormatter.ofPattern("hhma")).toString());
word = "8PM";
System.out.println(LocalTime.parse(word.toLowerCase(), DateTimeFormatter.ISO_LOCAL_TIME).toString());
}
});
}
}
...我得到了这个堆栈跟踪:
线程“AWT-EventQueue-0”java.time.format.DateTimeParseException 中的异常: 无法在索引 4 处解析文本“1200am” 在 java.time.format.DateTimeFormatter.parseResolved0(DateTimeFormatter.java:194 7) 在 java.time.format.DateTimeFormatter.parse(DateTimeFormatter.java:1849) 在 java.time.LocalTime.parse(LocalTime.java:441) 在 SSCCE$1.run(SSCCE.java:14) 在 java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311) 在 java.awt.EventQueue.dispatchEventImpl(EventQueue.java:756) 在 java.awt.EventQueue.access$500(EventQueue.java:97) 在 java.awt.EventQueue$3.run(EventQueue.java:709) 在 java.awt.EventQueue$3.run(EventQueue.java:703) 在 java.security.AccessController.doPrivileged(本机方法) 在 java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.ja 弗吉尼亚州:75) 在 java.awt.EventQueue.dispatchEvent(EventQueue.java:726) 在 java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java :201) 在 java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:11 6) 在 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)
【问题讨论】: