java实现根据身份证计算年龄的两种方式
发布时间:2020-12-15 07:48:29 所属栏目: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 "身份证件号有误,无法计算年龄"
第一种(推荐使用): import org.apache.hadoop.hive.ql.exec.UDF;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date;public class GetAge1 extends UDF { public String evaluate(String sfzjh) throws ParseException { if(sfzjh == null || "".equals(sfzjh) ){ return "身份证件号有误,无法计算年龄"; } if (sfzjh.length() != 15 && sfzjh.length() != 18){ return "身份证件号有误,无法计算年龄"; } String age="身份证件号有误,无法计算年龄"; CheckSFZ sf = new CheckSFZ(); // 调用教育身份证的函数,若身份证完全正确,此处可以不需要 sfzjh = sf.evaluate(sfzjh); if(sfzjh != "身份证件号有误"){ Calendar cal = Calendar.getInstance(); int yearNow = cal.get(Calendar.YEAR); int monthNow = cal.get(Calendar.MONTH)+1; int dayNow = cal.get(Calendar.DATE); SimpleDateFormat format = new SimpleDateFormat("yyyymmdd"); long millNow = format.parse(yearNow+""+(monthNow < 10 ? 0+""+monthNow :monthNow)+""+(dayNow < 10 ? 0+""+dayNow:dayNow)).getTime(); long mill = format.parse(sfzjh.substring(6,14)).getTime(); //将出生日期转化为毫秒值 long ag = (millNow - mill)/(1000*60*60)/(365*24); //age = String.valueOf(Math.floor(ag)); age = String.valueOf(ag); } return age; } /*public static void main(String[] args) throws ParseException { GetAge1 ag = new GetAge1(); System.out.println(ag.evaluate("360731980102400"));; }*/} (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |