0
点赞
收藏
分享

微信扫一扫

Java 计算2个时间准确的算出年龄的年月日

香小蕉 2022-02-28 阅读 67


一、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);
    }

 

 看完别忘点个赞 嘻嘻

举报

相关推荐

0 条评论