| | |
| | | package com.panzhihua.common.utlis; |
| | | |
| | | import cn.hutool.core.util.IdcardUtil; |
| | | import com.panzhihua.common.constants.Constants; |
| | | |
| | | import java.text.SimpleDateFormat; |
| | | import java.util.Calendar; |
| | | import java.util.Date; |
| | |
| | | // 根据年月日计算年龄,birthTimeString:"1994-11-14" |
| | | public static int getAgeFromBirthTime(String birthTimeString) { |
| | | // 先截取到字符串中的年、月、日 |
| | | int selectYear = Integer.parseInt(birthTimeString.substring(0,4)); |
| | | int selectMonth = Integer.parseInt(birthTimeString.substring(4,6)); |
| | | int selectDay = Integer.parseInt(birthTimeString.substring(6,8)); |
| | | // 得到当前时间的年、月、日 |
| | | Calendar cal = Calendar.getInstance(); |
| | | int yearNow = cal.get(Calendar.YEAR); |
| | | int monthNow = cal.get(Calendar.MONTH) + 1; |
| | | int dayNow = cal.get(Calendar.DATE); |
| | | |
| | | // 用当前年月日减去生日年月日 |
| | | int yearMinus = yearNow - selectYear; |
| | | int monthMinus = monthNow - selectMonth; |
| | | int dayMinus = dayNow - selectDay; |
| | | |
| | | int age = yearMinus;// 先大致赋值 |
| | | if (yearMinus < 0) {// 选了未来的年份 |
| | | age = 0; |
| | | } else if (yearMinus == 0) {// 同年的,要么为1,要么为0 |
| | | if (monthMinus < 0) {// 选了未来的月份 |
| | | age = 0; |
| | | } else if (monthMinus == 0) {// 同月份的 |
| | | if (dayMinus < 0) {// 选了未来的日期 |
| | | age = 0; |
| | | } else if (dayMinus >= 0) { |
| | | age = 1; |
| | | } |
| | | } else if (monthMinus > 0) { |
| | | age = 1; |
| | | } |
| | | } else if (yearMinus > 0) { |
| | | if (monthMinus < 0) {// 当前月>生日月 |
| | | } else if (monthMinus == 0) {// 同月份的,再根据日期计算年龄 |
| | | if (dayMinus < 0) { |
| | | } else if (dayMinus >= 0) { |
| | | age = age + 1; |
| | | } |
| | | } else if (monthMinus > 0) { |
| | | age = age + 1; |
| | | } |
| | | } |
| | | return age; |
| | | } |
| | | |
| | | public static int getAgeFromBirthTimes(String birthTimeString) { |
| | | // 先截取到字符串中的年、月、日 |
| | | int selectYear = Integer.parseInt(birthTimeString.substring(0,4)); |
| | | int selectMonth = Integer.parseInt(birthTimeString.substring(5,7)); |
| | | int selectDay = Integer.parseInt(birthTimeString.substring(8,10)); |
| | | int selectYear = Integer.parseInt(birthTimeString.substring(0, 4)); |
| | | int selectMonth = Integer.parseInt(birthTimeString.substring(4, 6)); |
| | | int selectDay = Integer.parseInt(birthTimeString.substring(6, 8)); |
| | | // 得到当前时间的年、月、日 |
| | | Calendar cal = Calendar.getInstance(); |
| | | int yearNow = cal.get(Calendar.YEAR); |
| | |
| | | return getAgeFromBirthTime(birthTimeString); |
| | | } |
| | | |
| | | public static String getAgeFormatBirthday(String brithday) { |
| | | if (StringUtils.isEmpty(brithday)) { |
| | | return ""; |
| | | } |
| | | String year = brithday.substring(0, 4); |
| | | String month = brithday.substring(4, 6); |
| | | String ri = brithday.substring(6, 8); |
| | | return year + "-" + month + "-" + ri; |
| | | } |
| | | |
| | | public static int getAgeFromBirthTimes(String birthTimeString) { |
| | | // 先截取到字符串中的年、月、日 |
| | | int selectYear = Integer.parseInt(birthTimeString.substring(0, 4)); |
| | | int selectMonth = Integer.parseInt(birthTimeString.substring(5, 7)); |
| | | int selectDay = Integer.parseInt(birthTimeString.substring(8, 10)); |
| | | // 得到当前时间的年、月、日 |
| | | Calendar cal = Calendar.getInstance(); |
| | | int yearNow = cal.get(Calendar.YEAR); |
| | | int monthNow = cal.get(Calendar.MONTH) + 1; |
| | | int dayNow = cal.get(Calendar.DATE); |
| | | |
| | | // 用当前年月日减去生日年月日 |
| | | int yearMinus = yearNow - selectYear; |
| | | int monthMinus = monthNow - selectMonth; |
| | | int dayMinus = dayNow - selectDay; |
| | | |
| | | int age = yearMinus;// 先大致赋值 |
| | | if (yearMinus < 0) {// 选了未来的年份 |
| | | age = 0; |
| | | } else if (yearMinus == 0) {// 同年的,要么为1,要么为0 |
| | | if (monthMinus < 0) {// 选了未来的月份 |
| | | age = 0; |
| | | } else if (monthMinus == 0) {// 同月份的 |
| | | if (dayMinus < 0) {// 选了未来的日期 |
| | | age = 0; |
| | | } else if (dayMinus >= 0) { |
| | | age = 1; |
| | | } |
| | | } else if (monthMinus > 0) { |
| | | age = 1; |
| | | } |
| | | } else if (yearMinus > 0) { |
| | | if (monthMinus < 0) {// 当前月>生日月 |
| | | } else if (monthMinus == 0) {// 同月份的,再根据日期计算年龄 |
| | | if (dayMinus < 0) { |
| | | } else if (dayMinus >= 0) { |
| | | age = age + 1; |
| | | } |
| | | } else if (monthMinus > 0) { |
| | | age = age + 1; |
| | | } |
| | | } |
| | | return age - 1; |
| | | } |
| | | |
| | | /** |
| | | * 根据身份证号判断年龄段 |
| | | * @param idCard 身份证号 |
| | | * @return 年龄段(1.80-89周岁 2.90-99周岁 3.100周岁(含)以上) |
| | | */ |
| | | public static int getAgeCategory(String idCard){ |
| | | int nub = -1; |
| | | int age = 0; |
| | | try { |
| | | age = IdcardUtil.getAgeByIdCard(idCard); |
| | | }catch (Exception e){ |
| | | return -1; |
| | | } |
| | | if (age >= Constants.EIGHTY && age < Constants.NINETY) { |
| | | nub = 1; |
| | | }else if (age >= Constants.NINETY && age < Constants.ONE_HUNDRED){ |
| | | nub = 2; |
| | | }else if (age >= Constants.ONE_HUNDRED){ |
| | | nub = 3; |
| | | } |
| | | return nub; |
| | | } |
| | | |
| | | public static int getAgeFromBirthTimes(long birthTimeLong) { |
| | | Date date = new Date(birthTimeLong * 1000l); |
| | | SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); |
| | | String birthTimeString = format.format(date); |
| | | return getAgeFromBirthTimes(birthTimeString); |
| | | } |
| | | |
| | | public static void main(String[] args) { |
| | | int age = getAgeFromBirthTime("1995-08-18"); |
| | | System.out.println(age); |
| | | String yese = "19980516"; |
| | | String year = yese.substring(0, 4); |
| | | String month = yese.substring(4, 6); |
| | | String ri = yese.substring(6, 8); |
| | | } |
| | | } |