Как анализировать входные данные строки даты японской эпохи в LocalDate/LocalDateTime
через Java 8 DateTime API?
Пример даты японского календаря;
明治23年11月29日
昭和22年5月3日
平成23年3月11日(金)14時46分
令和5年1月11日
Как анализировать входные данные строки даты японской эпохи в LocalDate/LocalDateTime
через Java 8 DateTime API?
Пример даты японского календаря;
明治23年11月29日
昭和22年5月3日
平成23年3月11日(金)14時46分
令和5年1月11日
Это достигается за счет использования DateTimeFormatter
. следующим образом;
DateTimeFormatter japaneseEraDtf = DateTimeFormatter.ofPattern("GGGGy年M月d日")
.withChronology(JapaneseChronology.INSTANCE)
.withLocale(Locale.JAPAN);
где GGGG
в шаблоне — это обозначение японских символов, представляющих эпоху
(например, 平成
Heisei), а остальные — со значениями года/месяца/дня с соответствующими японскими символами: y年
для года, M月
для месяца, d日
для дня.
LocalDate.parse("明治23年11月29日", japaneseEraDtf);
LocalDate.parse("昭和22年5月3日", japaneseEraDtf);
LocalDate.parse("令和5年1月11日", japaneseEraDtf);
выдаст;
1890-11-29
1947-05-03
2023-01-11
Для LocalDateTime
, используя обновленный шаблон "GGGGy年M月d日(E)HH時mm分"
в japaneseEraDtf
;
LocalDateTime.parse("平成23年3月11日(金)14時46分", japaneseEraDtf);
приведет к;
2011-03-11T14:46