计算两个日期相隔xx年xx月xx天

    public static void main(String[] args) throws ParseException
    {

        // 格式化初始日期
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        Date startdate = sdf.parse("2018-05-18");
        Date enddate = sdf.parse("2018-12-09");

        Calendar begindate = Calendar.getInstance();
        Calendar finishdate = Calendar.getInstance();
        begindate.setTime(startdate);
        finishdate.setTime(enddate);
        finishdate.add(Calendar.DAY_OF_MONTH, 1);

        int daysMonth = 0;
        // 获取两个日期对应的单独年,月,日
        int syear = finishdate.get(Calendar.YEAR);
        int smon = finishdate.get(Calendar.MONTH) + 1;
        int sday = finishdate.get(Calendar.DAY_OF_MONTH);
        int eyear = begindate.get(Calendar.YEAR);
        int emon = begindate.get(Calendar.MONTH) + 1;
        int eday = begindate.get(Calendar.DAY_OF_MONTH);
        int day = 0;
        int mon = 0;
        int year = 0;
        // 获取结束日期上个月所在月共多少天
        finishdate.add(Calendar.MONTH, -1);
        Calendar c = new GregorianCalendar(finishdate.get(Calendar.YEAR), (finishdate.get(Calendar.MONTH) + 1) - 1, 1);
        daysMonth = c.getActualMaximum(5);

        // 相差年,月,日计算
        day = daysMonth + sday - eday;

        smon = smon - 1;
        if (day >= daysMonth)
        {
            day = day - daysMonth;
            smon = smon + 1;
        }

        if (smon - emon < 0)
        {
            syear = syear - 1;
            mon = 12 + smon - emon;
        }
        else
        {
            mon = smon - emon;
        }
        year = syear - eyear;
        String date = "";
        date = date + year + "年";
        date = date + mon + "月";
        date = date + day + "日";

        System.out.println(date);
    }

 

posted @ 2021-03-15 16:41  MengJH  阅读(82)  评论(0编辑  收藏  举报