计算两个日期相隔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); }