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;
|
|
/**
|
* Created by qing on 2017/3/28.
|
*/
|
public class AgeUtils {
|
// 根据年月日计算年龄,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 getAgeFromBirthTime(long birthTimeLong) {
|
Date date = new Date(birthTimeLong * 1000l);
|
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
|
String birthTimeString = format.format(date);
|
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) {
|
String yese = "19980516";
|
String year = yese.substring(0, 4);
|
String month = yese.substring(4, 6);
|
String ri = yese.substring(6, 8);
|
}
|
}
|