如何将日语时代日期字符串值解析为LocalDate和LocalDateTime

bur*_*ete 8 java datetime internationalization datetime-format java-8

如何LocalDate/LocalDateTime通过Java 8 DateTime API 将日语时代日期字符串输入解析为?

日本日历日期示例;

??23?11?29?
??22?5?3?
??23?3?11????14?46?
??5?1?11?
Run Code Online (Sandbox Code Playgroud)

bur*_*ete 8

它是通过DateTimeFormatter以下方式实现的:

DateTimeFormatter japaneseEraDtf = DateTimeFormatter.ofPattern("GGGGy?M?d?")
        .withChronology(JapaneseChronology.INSTANCE)
        .withLocale(Locale.JAPAN);
Run Code Online (Sandbox Code Playgroud)

GGGG模式中的其中一个是代表时代的日语字符
(例如?? Heisei)的指示符,其余的分别带有年/月/日值及其各自的日语字符:y?年,M?月,d?日。

LocalDate.parse("??23?11?29?", japaneseEraDtf);
LocalDate.parse("??22?5?3?", japaneseEraDtf);
LocalDate.parse("??5?1?11?", japaneseEraDtf);
Run Code Online (Sandbox Code Playgroud)

会放弃;

1890-11-29
1947-05-03
2023-01-11
Run Code Online (Sandbox Code Playgroud)

LocalDateTime,通过使用更新的图案"GGGGy?M?d??E?HH?mm?"japaneseEraDtf;

LocalDateTime.parse("??23?3?11????14?46?", japaneseEraDtf);
Run Code Online (Sandbox Code Playgroud)

将导致

2011-03-11T14:46
Run Code Online (Sandbox Code Playgroud)