もうすぐ新元号

もうすぐ新しい元号になる。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が返ってきた。

同じタグの記事
同じカテゴリの記事

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA