もうすぐ新元号(続報)

もうすぐ新元号。新元号も決まり、Java Runtimeがアップデートした。
それぞれのJava Runtimeで実行してみる。

サンプルプログラム

import java.util.Date;
import java.util.Locale;
import java.text.DateFormat;
import java.text.SimpleDateFormat;

public class Wareki {
    public static void main(String[] args) {
        System.out.println(System.getProperty("java.version"));
        toWareki("1989/01/07");
        toWareki("1989/01/08");
        toWareki("2019/04/30");
        toWareki("2019/05/01");
    }

    public static void toWareki(String seireki) {
        try {
            DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT, Locale.JAPAN);
            Date date = df.parse(seireki);
            SimpleDateFormat sdf = new SimpleDateFormat("GGGGyyyy.M.d", new Locale("ja", "JP", "JP"));
            System.out.println(seireki + ":" + sdf.format(date));
        } catch (Exception e) {
            System.out.println("Err." + e.getMessage());
        }
    }
}

平成の変わり目をjava.versionと供に出力する。

実行

Java 6

1.6.0_45
1989/01/07:昭和64.1.7
1989/01/08:平成元.1.8
2019/04/30:平成31.4.30
2019/05/01:平成31.5.1

Java 7

1.7.0_79
1989/01/07:昭和64.1.7
1989/01/08:平成元.1.8
2019/04/30:平成31.4.30
2019/05/01:平成31.5.1

1.7.0_80
1989/01/07:昭和64.1.7
1989/01/08:平成元.1.8
2019/04/30:平成31.4.30
2019/05/01:平成31.5.1

Java 8

1.8.0_191
1989/01/07:昭和64.1.7
1989/01/08:平成元.1.8
2019/04/30:平成31.4.30
2019/05/01:平成31.5.1

1.8.0_201
1989/01/07:昭和64.1.7
1989/01/08:平成元.1.8
2019/04/30:平成31.4.30
2019/05/01:平成31.5.1

1.8.0_211
1989/01/07:昭和64.1.7
1989/01/08:平成元.1.8
2019/04/30:平成31.4.30
2019/05/01:令和元.5.1

Java 11

11
1989/01/07:昭和64.1.7
1989/01/08:平成元.1.8
2019/04/30:平成31.4.30
2019/05/01:元号元.5.1

11.0.1
1989/01/07:昭和64.1.7
1989/01/08:平成元.1.8
2019/04/30:平成31.4.30
2019/05/01:元号元.5.1

11.0.2
1989/01/07:昭和64.1.7
1989/01/08:平成元.1.8
2019/04/30:平成31.4.30
2019/05/01:元号元.5.1

11.0.3
1989/01/07:昭和64.1.7
1989/01/08:平成元.1.8
2019/04/30:平成31.4.30
2019/05/01:令和元.5.1

Java 12

12
1989/01/07:昭和64.1.7
1989/01/08:平成元.1.8
2019/04/30:平成31.4.30
2019/05/01:元号元.5.1

12.0.1
1989/01/07:昭和64.1.7
1989/01/08:平成元.1.8
2019/04/30:平成31.4.30
2019/05/01:令和元.5.1

1.6、1.7は令和に対応していない。
1.8は1.8.0_211から対応している。
11は11.0.3から対応している。11は最初から新元号になることはわかっていたようで元号元と出力されている。
12は12.0.1から対応している。12も最初から元号元の表記がある。

まとめ

DotNetでは和暦の対応が急遽変更になったそうですが、Javaはそのまま元号が令和になっただけで大きな変更はなさそう。
しかし、DotNetの対応で確かにそうだなあと思ったのは、まだ元号が変わったわけではないので、現在の出力は平成31.5.1でも良いような気がする。令和になるのは令和元.5.1以降でも。
ましてや元号元.5.1なんて出力されたら、もっと困ってしまう。Java11で和暦変換していた人はどうしていたのだろうか?

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

コメントを残す

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

CAPTCHA