JAVA 星座/生肖/年龄 计算器

去年看五行,今年看星座,星座计算代码,存起来,会用到的:

/**
 * 星座/生肖/年龄 计算器
 * Created by fengyunhe 2015/8/12.
 */
public class ConstellationUtils {

    public static final String[] zodiacArr = {"猴", "鸡", "狗", "猪", "鼠", "牛", "虎", "兔", "龙", "蛇", "马", "羊"};

    public static final String[] constellationArr = {"水瓶座", "双鱼座", "牡羊座", "金牛座", "双子座", "巨蟹座", "狮子座", "处女座", "天秤座",
            "天蝎座", "射手座", "魔羯座"};

    public static final int[] constellationEdgeDay = {20, 19, 21, 21, 21, 22, 23, 23, 23, 23, 22, 22};

    /**
     * 根据日期获取生肖
     *
     * @return
     */
    public static String date2Zodica(Calendar time) {
        return zodiacArr[time.get(Calendar.YEAR) % 12];
    }

    /**
     * 根据日期获取星座
     *
     * @param time
     * @return
     */
    public static String date2Constellation(Calendar time) {
        int month = time.get(Calendar.MONTH);
        int day = time.get(Calendar.DAY_OF_MONTH);
        if (day < constellationEdgeDay[month]) {
            month = month - 1;
        }
        if (month >= 0) {
            return constellationArr[month];
        }
        //default to return 魔羯
        return constellationArr[11];
    }


    /**
     * 计算年龄
     *
     * @param birthCal
     * @return 如果生日大于今天的日期,则返回-1
     */
    public static int calcAge(Calendar birthCal) {
        Calendar flightCal = Calendar.getInstance();
        int y = flightCal.get(Calendar.YEAR) - birthCal.get(Calendar.YEAR);
        int m = flightCal.get(Calendar.MONTH) - birthCal.get(Calendar.MONTH);
        int d = flightCal.get(Calendar.DATE) - birthCal.get(Calendar.DATE);
        if (y < 0) {
            return 0;
        }
        if (m < 0 || m == 0 && d < 0) { //月份不够一年
            y--;
        }

        if (y < 0) {
            return -1;
        }
        return y;
    }
}