もうすぐ新しい元号になる。Windowsは新元号になったら、Windowsアップデートで新元号に対応するらしい。
いつも使っているJavaはどうなのだろう。そもそもJavaで元号変換できるのだろうか。
SimpleDateFormat
Javaの日付フォーマットでおなじみSimpleDateFormatで元号表示できた。
import java.util.Date; import java.util.Locale; import java.util.Calendar; import java.text.DateFormat; import java.text.SimpleDateFormat; var df = DateFormat.getDateInstance(DateFormat.SHORT, Locale.JAPAN); var dateArray = new Date[] { df.parse("1989/01/06"), df.parse("1989/01/07"), df.parse("1989/01/08"), df.parse("1989/01/09"), df.parse("2019/04/29"), df.parse("2019/04/30"), df.parse("2019/05/01"), df.parse("2019/05/02"), }; var dateFormatArray = new SimpleDateFormat[] { new SimpleDateFormat("GGGGy.M.d", new Locale("ja", "JP", "JP")), new SimpleDateFormat("GGGGyy.M.d", new Locale("ja", "JP", "JP")), new SimpleDateFormat("GGGGyyy.M.d", new Locale("ja", "JP", "JP")), new SimpleDateFormat("GGGGyyyy.M.d", new Locale("ja", "JP", "JP")), }; for (var format : dateFormatArray) { for (var date : dateArray) { System.out.println(format.format(date)); } System.out.println("--"); }
昭和64.1.6 昭和64.1.7 平成1.1.8 平成1.1.9 平成31.4.29 平成31.4.30 元号1.5.1 元号1.5.2 -- 昭和64.1.6 昭和64.1.7 平成01.1.8 平成01.1.9 平成31.4.29 平成31.4.30 元号01.5.1 元号01.5.2 -- 昭和064.1.6 昭和064.1.7 平成001.1.8 平成001.1.9 平成031.4.29 平成031.4.30 元号001.5.1 元号001.5.2 -- 昭和64.1.6 昭和64.1.7 平成元.1.8 平成元.1.9 平成31.4.29 平成31.4.30 元号元.5.1 元号元.5.2 --
元号が表示できた。それもGGGGyyyyにすると、元年が出力される。
すばらしい。
java12で実行したが、未来の元号は「元号」と表示されるようだ。今しか見られないのだろうか。
まとめ
でも、社内システムで和暦を使うことは少ないと思う。
jshellを使って動かしてみたが、動作確認には便利だった。
java10以降使えるvarも意外と便利だし正しく動いた。
jdk1.8.0_201でコンパイルできるように修正して実行したところ、2019.5.1は平成31.5.1が返ってきた。
同じタグの記事
- EclipseLinkでJPA
- eclipseの良く使うショートカットキー
- eclipseデフォルトの文字コード
- itext5でPDFを暗号化する
- Java DateFormat
- Java8で指定回数繰り返し
- Java9でJAXB
- JavaでZip圧縮
- javaでイメージフォーマット変換
- javaでダミー画像作成
同じカテゴリの記事