Edited at

Javaで新元号試してみた


Java SE 8 が新元号に対応したらしい

2019年4月17日公開の Java SE 8 Update 211 にて検証。


Sample.java

DateTimeFormatter dtf = DateTimeFormatter.ofPattern("GGGGy年M月d日")

.withChronology(JapaneseChronology.INSTANCE)
.withLocale(Locale.JAPAN);

JapaneseDate jd = JapaneseDate.of(2019, 4, 29);

for (int i = 0; i < 5; i++) {
System.out.println(dtf.format(jd.plus(i, ChronoUnit.DAYS)));
}



実行結果

平成31年4月29日

平成31年4月30日
令和1年5月1日
令和1年5月2日
令和1年5月3日

令和になりました。やりましたね。


ところで、もうすぐゴールデンウィークですね

元号ばかり気にしていて、新元号の最初の年を「元年」と呼ぶのをすっかり失念していましたよ。トラブルにならないといいですね。

楽しいゴールデンウィークをお過ごしください。


一応「元年」も対応してみた


Sample2.java

DateTimeFormatter dtf = new DateTimeFormatterBuilder()

.appendText(ChronoField.ERA, TextStyle.FULL)
.appendText(ChronoField.YEAR_OF_ERA, Collections.singletonMap(1L, "元"))
.appendLiteral("年")
.appendValue(ChronoField.MONTH_OF_YEAR)
.appendLiteral("月")
.appendValue(ChronoField.DAY_OF_MONTH)
.appendLiteral("日")
.toFormatter()
.withChronology(JapaneseChronology.INSTANCE)
.withLocale(Locale.JAPAN);

もういっそ西暦にしませんか?(結論)