【Java】新元号に対する和暦変換の対応状況について Java8 or 10 + Windows 10 April 2018 Update
今回は新元号に関して、少し検証を追加してみましたので紹介します。
■前回の和暦変換の記事
前回は、過去(明治への改元)について紹介しましたが、
今回は2018/5/1の新元号への対応について、2018/5/27現在の状況を調査してみました。
■環境
Windows 10 build 1803 (Windows 10 April 2018 Update)
&
■前提情報
前提情報としてあげられる記事がこちらです。
引用)
April 2018 Update では、今後 新しい元号が発表された際にスムーズに対応できるよう準備をしています。新しい元号となる 2019 年 5 月に先立ち、April 2018 Update では各元号の期間を保持しているレジストリが更新されます。現時点では新しい元号の名称が公表されていないため、変更されるレジストリでは 2019 年 5 月 1 日 以降の年号を「??」と扱います。
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\Calendars\Japanese\Eras]
“1868 01 01″=”明治_明_Meiji_M”
“1912 07 30″=”大正_大_Taisho_T”
“1926 12 25″=”昭和_昭_Showa_S”
“1989 01 08″=”平成_平_Heisei_H”
“2019 05 01″=”??_?_??????_?”
問題はここ
“2019 05 01″=”??_?_??????_?”
あれ?.NETはレジストリ見るとして、Javaはどうなってるんだ?
さっそく検証してみました。
■検証
<ソースコード>
<Java8 出力結果>
( ゚д゚)ウム。。明治は相変わらず変更ないけど、Java8だと新暦対応せず、平成表記のまま
レジストリ見てない?
RuntimeException:西暦1868年1月1日 (java.time.DateTimeException: JapaneseDate before Meiji 6 is not supported) RuntimeException:西暦1868年1月1日 (java.time.DateTimeException: JapaneseDate before Meiji 6 is not supported) RuntimeException:西暦1868年1月25日 (java.time.DateTimeException: JapaneseDate before Meiji 6 is not supported) RuntimeException:西暦1868年9月7日 (java.time.DateTimeException: JapaneseDate before Meiji 6 is not supported) RuntimeException:西暦1868年9月8日 (java.time.DateTimeException: JapaneseDate before Meiji 6 is not supported) RuntimeException:西暦1868年9月9日 (java.time.DateTimeException: JapaneseDate before Meiji 6 is not supported) RuntimeException:西暦1868年10月22日 (java.time.DateTimeException: JapaneseDate before Meiji 6 is not supported) RuntimeException:西暦1868年10月23日 (java.time.DateTimeException: JapaneseDate before Meiji 6 is not supported) RuntimeException:西暦1872年12月31日 (java.time.DateTimeException: JapaneseDate before Meiji 6 is not supported) 西暦1873年1月1日 → 明治6年1月1日 西暦1912年1月1日 → 明治45年1月1日 西暦1912年7月29日 → 明治45年7月29日 西暦1912年7月30日 → 大正1年7月30日 西暦1926年1月1日 → 大正15年1月1日 西暦1926年12月24日 → 大正15年12月24日 西暦1926年12月25日 → 昭和1年12月25日 西暦1989年1月1日 → 昭和64年1月1日 西暦1989年1月7日 → 昭和64年1月7日 西暦1989年1月8日 → 平成1年1月8日 西暦2019年4月30日 → 平成31年4月30日 西暦2019年5月1日 → 平成31年5月1日 西暦2019年5月2日 → 平成31年5月2日
<Java10 実行結果>
(。´・ω・)? 実行結果変わらず?
レジストリ見てない?
RuntimeException:西暦1868年1月1日 (java.time.DateTimeException: JapaneseDate before Meiji 6 is not supported) RuntimeException:西暦1868年1月1日 (java.time.DateTimeException: JapaneseDate before Meiji 6 is not supported) RuntimeException:西暦1868年1月25日 (java.time.DateTimeException: JapaneseDate before Meiji 6 is not supported) RuntimeException:西暦1868年9月7日 (java.time.DateTimeException: JapaneseDate before Meiji 6 is not supported) RuntimeException:西暦1868年9月8日 (java.time.DateTimeException: JapaneseDate before Meiji 6 is not supported) RuntimeException:西暦1868年9月9日 (java.time.DateTimeException: JapaneseDate before Meiji 6 is not supported) RuntimeException:西暦1868年10月22日 (java.time.DateTimeException: JapaneseDate before Meiji 6 is not supported) RuntimeException:西暦1868年10月23日 (java.time.DateTimeException: JapaneseDate before Meiji 6 is not supported) RuntimeException:西暦1872年12月31日 (java.time.DateTimeException: JapaneseDate before Meiji 6 is not supported) 西暦1873年1月1日 → 明治6年1月1日 西暦1912年1月1日 → 明治45年1月1日 西暦1912年7月29日 → 明治45年7月29日 西暦1912年7月30日 → 大正1年7月30日 西暦1926年1月1日 → 大正15年1月1日 西暦1926年12月24日 → 大正15年12月24日 西暦1926年12月25日 → 昭和1年12月25日 西暦1989年1月1日 → 昭和64年1月1日 西暦1989年1月7日 → 昭和64年1月7日 西暦1989年1月8日 → 平成1年1月8日 西暦2019年4月30日 → 平成31年4月30日 西暦2019年5月1日 → 平成31年5月1日 西暦2019年5月2日 → 平成31年5月2日
どうやら、標準APIの対応はまだで、プロパティファイルか、実行オプションで対応するようですねぇ。
今のところは
<プロパティファイル>
<実行オプション>
Java9 新元号(年号)を追加 – SOFTEMCOM Developers Blog
対応されたら困るけど、対応されても困る和暦対応、どうすればよいものか(´ε`;)ウーン…