`
jy00509336
  • 浏览: 239395 次
  • 性别: Icon_minigender_1
  • 来自: 山西
社区版块
存档分类
最新评论

根据生日计算年龄

 
阅读更多

原帖:这里

 

根据自己需要改了改。
 

根据生日计算年龄可以通过Calendar实现。最简单可以考虑get(Calendar.DAY_OF_YEAR)来简单修正年龄,但是遇到生日在闰年的2月29之后,或者今年是闰年的2月29之后可能出现计算不准,误差一天。所以还是老实判断年月日好了。

    /**
     * 根据出生日期计算年龄
     * 
     * @param birthDay
     * @return 未来日期返回0
     * @throws Exception
     */
    public static int getAge(Date birthDay) throws Exception {

        Calendar cal = Calendar.getInstance();

        if (cal.before(birthDay)) {
            return 0;
        }

        int yearNow = cal.get(Calendar.YEAR);
        int monthNow = cal.get(Calendar.MONTH);
        int dayOfMonthNow = cal.get(Calendar.DAY_OF_MONTH);
        cal.setTime(birthDay);

        int yearBirth = cal.get(Calendar.YEAR);
        int monthBirth = cal.get(Calendar.MONTH);
        int dayOfMonthBirth = cal.get(Calendar.DAY_OF_MONTH);

        int age = yearNow - yearBirth;

        if (monthNow <= monthBirth) {
            if (monthNow == monthBirth) {
                if (dayOfMonthNow < dayOfMonthBirth) {
                    age--;
                }
            } else {
                age--;
            }
        }

        return age;
    }

    /**
     * 根据出生日期计算年龄
     * 
     * @param strBirthDay
     *            字符串型日期
     * @param format
     *            日期格式
     * @return 未来日期返回0
     * @throws Exception
     */
    public static int getAge(String strBirthDay, String format)
            throws Exception {

        DateFormat df = new SimpleDateFormat(format);
        Date birthDay = df.parse(strBirthDay);
        return getAge(birthDay);
    }
 
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics