[英]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.