Java:西暦 ⇒ 和暦へ変換する方法

Javaで西暦から和暦へ変換する方法を紹介します。
SimpleDateFormat に「GGGGyy年MM月dd日」というフォーマットを指定することで、簡単に和暦表示へ変換できます。


【概要】

・対象:java.util.Date または java.util.Calendar 型の日付
・方法:Locale("ja","JP","JP") を指定して SimpleDateFormat を利用
・出力例:令和04年06月06日 など


【サンプルコード(Date型)】


【サンプルコード(Calendar型)】


【JUnitテスト例】

※実行日によって出力結果は変わるため、テストでは日付を固定しておくと良いでしょう。


【補足・注意点】

SimpleDateFormat は旧APIのため、Java 8以降では java.time パッケージの DateTimeFormatterJapaneseDate を利用するのが推奨です。
・和暦表記は元号改定時に影響を受けるため、将来の変更を考慮した設計が望まれます。
・フォーマット指定 "GGGGyy年MM月dd日" の「GGGG」は元号名、「yy」は年数、「MM」「dd」は月・日です。
・Calendar型は getTime() でDate型に変換してフォーマットしています。
・「平成」や「昭和」など過去の元号も同じロジックで変換可能です。


【まとめ】


SimpleDateFormat を利用すれば、わずかなコードで西暦から和暦への変換が可能です。
ただし、Java 8以降の新しい日付API(java.time)を使用する方法も合わせて検討すると、より保守性の高い実装ができます。

「駑馬十駕」を信念に IT系情報を中心に調べた事をコツコツ綴っています。

モバイルバージョンを終了