もうすぐ新しい元号になる。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でダミー画像作成
同じカテゴリの記事
コメントを残す