一、Java 时间比较需求
1.A时间到B时间,算出年龄有多少年,月,日。
如:1988-10-24 到 2022-02-26,结果为:
33岁4个月2天
二、Java 时间代码实现
1 A时间到B时间,算出年龄多少年,月,日。
public String yearCompare(String fromDateString/*1988-10-24 00:00:00*/, String toDateString/*2022-02-26 15:10:44*/){
DateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date fromDate = null;
Date toDate = null;
try {
fromDate = format.parse(fromDateString);
toDate = format.parse(toDateString);
} catch (ParseException e) {
e.printStackTrace();
}
Calendar from = Calendar.getInstance();
from.setTime(fromDate);
Calendar to = Calendar.getInstance();
to.setTime(toDate);
int fromYear = from.get(Calendar.YEAR);
int fromMonth = from.get(Calendar.MONTH);
int fromDay = from.get(Calendar.DAY_OF_MONTH);
int toYear = to.get(Calendar.YEAR);
int toMonth = to.get(Calendar.MONTH);
int toDay = to.get(Calendar.DAY_OF_MONTH);
int year = toYear - fromYear;
int month = toMonth - fromMonth;
int day = toDay - fromDay;
//按照减法原理,先day相减,不够向month借;然后month相减,不够向year借;最后year相减。
Calendar now = Calendar.getInstance();
if (day <0) {
month -=1;
now.add(Calendar.MONTH, -1);//得到上一个月,用来得到上个月的天数。
day = day + now.getActualMaximum(Calendar.DAY_OF_MONTH);
}
if (month <0) {
month = (month +12) %12;
year--;
}
StringBuffer age =new StringBuffer();
if (year >0) {
age.append(year +"岁");
}
if (month >0) {
age.append(month +"个月");
}
if (day >0) {
age.append(day +"天");
}
if (year ==0 && month ==0 && day ==0) {
age.append("今日出生");
}
return String.valueOf(age);
}
看完别忘点个赞 嘻嘻