一.用工具类来转换
话不多说直接上代码 网上有很多但有的就没有防护未来的日期,以至于年龄存在负数的情况。
package cn.sbw.util;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class AgeUtil {
// 根据年月日计算年龄,birthTimeString:"1994-11-14"
public static int getAgeFromBirthTime(String birthTimeString) {
// 先截取到字符串中的年、月、日
String strs[] = birthTimeString.trim().split("-");
int selectYear = Integer.parseInt(strs[0]);
int selectMonth = Integer.parseInt(strs[1]);
int selectDay = Integer.parseInt(strs[2]);
// 得到当前时间的年、月、日
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);
}
}
代码上有注释 调用的话我们这么就用main方法调用
public class AgeTest {
public static void main(String[] args) {
String birthday = "1998-10-2";
int age = AgeUtils.getAgeFromBirthTime(birthday);
System.out.println("age:" + age);
}
}
今天日期是2019-8-28 查出来age:21
二.可以直接用Sql语句函数来转换
因为考虑到建工具类麻烦 大多数人都是从数据库查出来然后显示到页面上,我们就直接可以sql语句上进行修改来转换,因为有几种方法可以转这里就说一种简单的吧
SELECT year( from_days( datediff( now( ), birthday))) from 表名 ;
这里的birthday是你的出生日期的列名自己换你自己的列名就行了
这是没用函数之前
用了函数之后
Sql语句来转换有很多种这里说的比较简单的一种
希望对大家有帮助!!!!