Java 6で和暦を使う
プログラミングお役立ちメモ
private String getJpYear(Calendar calendar) {
//西暦から和暦を取得する
//和暦変換テーブル
String warekiTable[][] = {
{"18680908","19120729", "明治"}, //明治
{"19120730","19261224", "大正"}, //大正
{"19261225","19890107", "昭和"}, //昭和
{"19890108","99991231", "平成"}}; //平成
//YYYYMMDDの形式に変換する
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
String ymd = sdf.format(calendar.getTime());
//暦変換テーブルをサーチする
int i = 0;
for (i=0; i<warekiTable.length; i++) {
//当該西暦が開始年以上で最終年以下ならbreak
if (ymd.compareTo(warekiTable[i][0]) >= 0 && ymd.compareTo(warekiTable[i][1]) <= 0) {
break;
}
}
//暦テーブルに該当レコードがあれば、和暦年を計算する
if (i < warekiTable.length) {
int jpYear = calendar.get(Calendar.YEAR) - Integer.parseInt(warekiTable[i][0].substring(0,4)) + 1;
//和号+和暦年を返す
return warekiTable[i][2] + jpYear;
} else {
//明治より前は西暦で返す
return calendar.get(Calendar.YEAR).toString();
}
}