« 2008年10月 | トップページ | 2009年1月 »

2008年12月

2008年12月 2日 (火)

生年月日を年号で

生年月日が西暦で表示されるが,年号で表示されないと不便なので,年号で表示できるようにソースを変更した。これで,受付画面で年齢を表示するようにした時は年号で生年月日を表示するようになり,西暦を知りたい時は,年齢を非表示にすると西暦表示になる。

 

infomodel/ModelUtils.java の編集

public static String getAgeBirthday(String mmlBirthday) {
    String age = getAge(mmlBirthday);
    if (age != null) {
        StringBuffer buf = new StringBuffer();
        buf.append(age);
        buf.append(" ");
        buf.append(AGE);
        buf.append(" (");
////        buf.append(mmlBirthday);
        buf.append(toNengo(mmlBirthday));
        buf.append(")");
        return buf.toString();
    }
    return null;
}

//// 西暦=>年号変換 
public static String toNengo(String mmlBirthday) {
    int year;
    int month;
    int day;
    String nengo;

    year = Integer.valueOf(mmlBirthday.substring(0,4));
    month = Integer.valueOf(mmlBirthday.substring(5,7));
    day = Integer.valueOf(mmlBirthday.substring(8,10));
    
    // 1990年より先は平成
    if (year >= 1990) {
        nengo = "H"; year = year - 1988;
    }
    // 1989年だったら,1月7日以前は昭和
    else if (year == 1989) {
        if (month == 1 & day <= 7) {
            nengo = "S"; year = 64;
        }
        else {
            nengo = "H"; year = 1;
        }
    }
    // 1927年から1988年は昭和
    else if (year >= 1927 & year <= 1988) {
        nengo = "S"; year = year - 1925;
    }
    // 1926年だったら,12月25日以降は昭和
    else if (year == 1926) {
        if (month == 12 & day >= 25) {
            nengo = "S"; year = 1;
        }
        else {
            nengo = "T"; year = 15;
        }
    }
    // 1913年から1925年は大正
    else if (year >= 1913 & year <= 1925) {
        nengo = "T"; year = year - 1911;
    }
    // 1912 年だったら,7/30 以降は大正
    else if (year == 1912) {
        if (month >= 8) {
            nengo = "T"; year = 1;
        }
        else if (month <= 6) {
            nengo = "M"; year = 45;
        }
        else if (day >= 30) {
            nengo = "T"; year = 1;
        }
        else {
            nengo = "M"; year = 45;
        }
    }
    // 1911年以前は明治
    else {
        nengo = "M"; year = year - 1867;
    }

    StringBuffer buf = new StringBuffer();
    buf.append(nengo);
    if (year <= 9) buf.append("0"); 
    buf.append(Integer.toString(year));
    buf.append("-");
    if (month <= 9) buf.append("0"); 
    buf.append(Integer.toString(month));
    buf.append("-");
    if (day <= 9) buf.append("0"); 
    buf.append(Integer.toString(day));
    return buf.toString();        
}

« 2008年10月 | トップページ | 2009年1月 »