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个月
calender类,它可以进行日期加减操作
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);
}
你的日期格式固定的时候可以使用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();
}
}