Java 8 时间 API:如何将格式为 "MM.yyyy" 的字符串解析为 LocalDate

20 浏览
0 Comments

Java 8 时间 API:如何将格式为 "MM.yyyy" 的字符串解析为 LocalDate

我对在Java 8 Time API中解析日期有些泄气。

之前我可以很容易地写出:

String date = "04.2013";
DateFormat df = new SimpleDateFormat("MM.yyyy");
Date d = df.parse(date);

但现在如果我使用LocalDate并像这样操作:

String date = "04.2013";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MM.yyyy");
LocalDate ld = LocalDate.parse(date, formatter);

我会收到一个异常:

java.time.format.DateTimeParseException: 在索引0处无法解析文本“04”
java.time.format.DateTimeFormatter.parseResolved0(DateTimeFormatter.java:1948)
java.time.format.DateTimeFormatter.parse(DateTimeFormatter.java:1850)
java.time.LocalDate.parse(LocalDate.java:400)
java.time.LocalDate.parse(LocalDate.java:385)
com.luxoft.ath.controllers.JsonController.region(JsonController.java:38)
...(省略部分异常信息)

如果我将字符串格式更改为“yyyy-MM-dd”,一切就都能完美地工作,甚至不需要使用formatter:

String date = "2013-04-12";
LocalDate ld = LocalDate.parse(date);

所以我的问题是:如何使用Java 8 Time API以自定义格式解析日期?

0