2013年6月5日水曜日

和暦変換

JapaneseImperialCalendarクラスはAndroidで和暦表示できないんですかね。。
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();
        }   
    }

0 件のコメント:

コメントを投稿