java 根据生日计算年龄

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

// 根据生日计算年龄,判断了年月日,比简单的年份上计算更精准
public static int getAge(Date birthDay) throws Exception {
        Calendar cal = Calendar.getInstance();

if (cal.before(birthDay)) {
            throw new IllegalArgumentException(
                "The birthDay is before Now.It‘s unbelievable!");
        }

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) {
                //monthNow==monthBirth
                if (dayOfMonthNow < dayOfMonthBirth) {
                    age--;
                } else {
                    //do nothing
                }
            } else {
                //monthNow>monthBirth
                age--;
            }
        } else {
            //monthNow<monthBirth
            //donothing
        }

return age;
    }

时间: 2024-10-07 14:24:24

java 根据生日计算年龄的相关文章

SPSS根据生日计算年龄并分组

COMPUTE Age=DATEDIFF($TIME,BirthDate,"years"). EXECUTE. SAVE OUTFILE='D:\MaryKay\Data\PRD\ConsultantInfoPrd.sav' /COMPRESSED. SAVE OUTFILE='D:\MaryKay\Data\PRD\ConsultantInfoPrd.sav' /COMPRESSED. STRING AgeGroup1 (A8). RECODE Age (19 thru 24='19

根据生日计算年龄

/*      * 根据生日计算年龄     */    public int age(String birthDate) {        SimpleDateFormat dft=new SimpleDateFormat("yyyy-MM-dd");        Date time = null;        //类型转换        try {            time=dft.parse(birthDate);        } catch (ParseExcept

java根据身份证计算年龄

/** * 根据身份证计算年龄 * * @param idcard * @return */ public static Integer idCardToAge(String idcard) { Integer selectYear = Integer.valueOf(idcard.substring(6, 10)); //出生的年份 Integer selectMonth = Integer.valueOf(idcard.substring(10, 12)); //出生的月份 Integer

问题:oracle 计算年龄;结果:oracle中根据生日计算年龄的问题

SELECT FLOOR(MONTHS_BETWEEN(SYSDATE,birthday)/12,1) FROM ltteacherinfo where name='朱雪东111'这个报错ORA 00909 :invalid number of arguments这个是怎么错了,计算年龄该怎么算,年龄要整数 --计算员工年龄SELECT FLOOR(MONTHS_BETWEEN(SYSDATE,birthdate)/12) FROM   ps_personal_data             

C#根据身份证号码,计算生日、年龄、性别

朋友谈及身份证相关的信息,才了解到原来省份证号码中包含了年龄和性别. 这样在数据库中,就不必单独留字段存放它们了(不过,要根据具体情况来,要是读取频率较高,还是单独列出为好),这样顺带解决了年龄变更的问题. 程序仅仅为了实现这个功能,里面还是需要数据验证的,用户输入的信息,毕竟在猿类看来,都是“非法的”.废话不多说了,贴上我写的程序,还请路过的大神斧正: using System; using System.Collections.Generic; using System.Linq; usin

js/java中计算年龄

js中计算年龄  /**  * 将生日转换成年龄  */  function birthDayToAge(){  var aDate=new Date();  var thisYear = aDate.getFullYear();  var thisMonth = aDate.getMonth()+1;  var thisDay = aDate.getDate();  var currentDate = thisYear+"-"+thisMonth+"-"+this

Java 根据年月日精确计算年龄

1 import java.text.SimpleDateFormat; 2 import java.util.Calendar; 3 import java.util.Date; 4 5 /** 6 * Created by qing on 2017/3/28. 7 */ 8 public class AgeUtils { 9 // 根据年月日计算年龄,birthTimeString:"1994-11-14" 10 public static int getAgeFromBirthT

Java 计算年龄

1 public static String getAgeTxt(String birthTime,String beginTime,int level){ 2 if(StringUtils.isBlank(birthTime)||StringUtils.isBlank(beginTime)){ 3 System.out.println("参数中有空值!"); 4 } 5 6 int year = 0,month=0,day=0,hour=0; 7 8 Date birthDate =

java实现根据身份证计算年龄的两种方式

第一种(推荐使用): import org.apache.hadoop.hive.ql.exec.UDF; import java.util.Calendar; public class GetAge extends UDF { public String evaluate(String sfzjh){ if(sfzjh == null || "".equals(sfzjh) ){ return "身份证件号有误,无法计算年龄"; } if (sfzjh.lengt