java实现两个时间相减得到年月

java实现两个时间相减得到年月,例如:
开始日期:2015-06-20,结束日期:2016-02-05。结果为:7个月
开始日期:2015-06-20,结束日期:2015-12-12。结果为:6个月
开始日期:2015-06-20,结束日期:2017-10-10。结果为:2年3个月
开始日期:2015-12-10,结束日期:2017-10-10。结果为:1年10个月

3个回答

calender类,它可以进行日期加减操作

meijun110
meijun110 发现每次都是你的评论最好
4 年多之前 回复
meijun110
meijun110 发现每次都是你的评论最好
4 年多之前 回复

你的日期格式固定的时候可以使用SimpleDateFormat类来进行格式化日期。代码如下:、

public static void main(String[] args) {
        String startCal = "2015-12-10";
        String endCal = "2017-10-10";

        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");

        try {
            Date startDate = sdf.parse(startCal);
            Date endDate = sdf.parse(endCal);
            Calendar startCalendar = Calendar.getInstance();
            Calendar endCalendar = Calendar.getInstance();

            startCalendar.setTime(startDate);
            endCalendar.setTime(endDate);

            if (endCalendar.compareTo(startCalendar) < 0) {
                System.out.println("后一时次的日期小于前一时次的日期,请重新输入。");
                return;
            }

            int day = endCalendar.get(Calendar.DAY_OF_MONTH)
                    - startCalendar.get(Calendar.DAY_OF_MONTH);
            int month = endCalendar.get(Calendar.MONTH)
                    - startCalendar.get(Calendar.MONTH);
            int year = endCalendar.get(Calendar.YEAR)
                    - startCalendar.get(Calendar.YEAR);

            if (day < 0) {
                month--;
            }

            if (month < 0) {
                month += 12;
                year--;
            }
            System.out.println("两者相差年月为:" + year + "年" + month + "个月");
        } catch (ParseException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
 public static void main(String[] args) {
        String startTime = "2015-06-20";
        String endTime = "2016-02-05";

        String[] arg1 = startTime.split("-");
        String[] arg2 = endTime.split("-");
        int year1 = Integer.valueOf(arg1[0]);
        int year2 = Integer.valueOf(arg2[0]);
        int month1 = Integer.valueOf(arg1[1]);
        int month2 = Integer.valueOf(arg2[1]);
        int day1 = Integer.valueOf(arg1[2]);
        int day2 = Integer.valueOf(arg2[2]);
        int md = 0 ;
        if(year1!=year2){
            md = day2>day1?0:-1;
        }
        int diffMonth = (year2*12+month2)-(year1*12+month1)+md;
        int yearNum = diffMonth/12;
        int monthNum = diffMonth % 12;
        System.out.println("年数="+yearNum+",月数="+monthNum);
    }
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问