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 パッケージの DateTimeFormatter や JapaneseDate を利用するのが推奨です。
・和暦表記は元号改定時に影響を受けるため、将来の変更を考慮した設計が望まれます。
・フォーマット指定 "GGGGyy年MM月dd日" の「GGGG」は元号名、「yy」は年数、「MM」「dd」は月・日です。
・Calendar型は getTime() でDate型に変換してフォーマットしています。
・「平成」や「昭和」など過去の元号も同じロジックで変換可能です。
【まとめ】
SimpleDateFormat を利用すれば、わずかなコードで西暦から和暦への変換が可能です。
ただし、Java 8以降の新しい日付API(java.time)を使用する方法も合わせて検討すると、より保守性の高い実装ができます。
