当求得是相差多少天的时候用下面的方法很容易解决。
/**
* 用SimpleDateFormat计算时间差
* @throws ParseException
*/
public static void calculateTimeDifferenceBySimpleDateFormat() throws ParseException {
SimpleDateFormat simpleFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm");
/*天数差*/
Date fromDate1 = simpleFormat.parse("2018-03-01 12:00");
Date toDate1 = simpleFormat.parse("2018-03-12 12:00");
long from1 = fromDate1.getTime();
long to1 = toDate1.getTime();
int days = (int) ((to1 - from1) / (1000 * 60 * 60 * 24));
System.out.println("两个时间之间的天数差为:" + days);
/*小时差*/
Date fromDate2 = simpleFormat.parse("2018-03-01 12:00");
Date toDate2 = simpleFormat.parse("2018-03-12 12:00");
long from2 = fromDate2.getTime();
long to2 = toDate2.getTime();
int hours = (int) ((to2 - from2) / (1000 * 60 * 60));
System.out.println("两个时间之间的小时差为:" + hours);
/*分钟差*/
Date fromDate3 = simpleFormat.parse("2018-03-01 12:00");
Date toDate3 = simpleFormat.parse("2018-03-12 12:00");
long from3 = fromDate3.getTime();
long to3 = toDate3.getTime();
int minutes = (int) ((to3 - from3) / (1000 * 60));
System.out.println("两个时间之间的分钟差为:" + minutes);
}
输出结果是:
两个时间之间的天数差为:11
两个时间之间的小时差为:264
两个时间之间的分钟差为:15840
当求的是相差几个月的时候用上面的方法就不准确了
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
Calendar mid = Calendar.getInstance();
Calendar bef = Calendar.getInstance();
Calendar aft = Calendar.getInstance();
mid.setTime(sdf.parse("2017-7"));
bef.setTime(sdf.parse(creditDate));
aft.setTime(sdf.parse(lastDayOfMonth));
int resultbef = bef.get(Calendar.MONTH) - mid.get(Calendar.MONTH);
int yearmonthbef = (bef.get(Calendar.YEAR) - mid.get(Calendar.YEAR)) * 12;
int monthbef= yearmonthbef + resultbef;
int resultaft = aft.get(Calendar.MONTH) - mid.get(Calendar.MONTH);
int yearmonthaft = (aft.get(Calendar.YEAR) - mid.get(Calendar.YEAR)) * 12;
int monthaft= yearmonthaft + resultaft;
int month=0;
month=monthaft-monthbef;
最终求出的month就是相差多少月,当求差几个月的时候要用日历类,这样会更好。