[英]Cannot parse date with LocalDateTime
我正在尝试使用Java8 LocalDateTime解析日期字符串,但没有成功。
例外是: DateTimeParseException:无法在索引3处解析文本'28 -APR-2015 01:25:00 PM'
要解析的字符串是: 28-APR-2015 01:25:00 PM ,我当前使用的模式是dd-LLL-yyyy hh:mm:ss a
我哪里错了?
谢谢
添加示例代码:
String text = "28-APR-2015 01:25:00 PM";
DateTimeFormatter fromatter = DateTimeFormatter.ofPattern("dd-LLL-yyyy hh:mm:ss a");
try {
String out = LocalDateTime.parse(text, formatter)
System.out.println(out);
} catch (DateTimeParseException e) {
e.printStackTrace();
}
通过使用@Florin的响应来解决:
DateTimeFormatter tertiaryFormatter = new DateTimeFormatterBuilder()
.parseCaseInsensitive().parseLenient().appendPattern("dd-LLL-yyyy hh:mm:ss a").toFormatter();
英文MMM
为4月
英语LLL
将是4
请运行此代码段-它会为您提供很多解释:
asList("MMM", "LLL").forEach(ptrn
-> System.out.println(ptrn + ": " + ofPattern(ptrn, Locale.ENGLISH).format(Month.APRIL))
);
Locale.setDefault(Locale.ENGLISH);
String textM = "28-Apr-2015 01:25:00 PM";
DateTimeFormatter formatterM = DateTimeFormatter.ofPattern("dd-MMM-yyyy hh:mm:ss a");
System.out.println(LocalDateTime.parse(textM, formatterM));
String textL = "28-4-2015 01:25:00 PM";
DateTimeFormatter formatterL = DateTimeFormatter.ofPattern("dd-LLL-yyyy hh:mm:ss a");
System.out.println(LocalDateTime.parse(textL, formatterL));
如果你需要使用APR,那么你需要建立自己的DateTimeFormatter
使用DateTimeFormatterBuilder
并设置parseCaseInsensitive
选项。
问题是由于您的时间模式问题。 您需要确保您的时间格式可以与模式匹配。
https://docs.oracle.com/javase/8/docs/api/java/time/format/DateTimeFormatter.html
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.