一、分别计算日、时、分
/**
* 用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 format = new SimpleDateFormat("yyyyMMddHHmmss");
Date parse = format.parse("20180321141111");
Date date = format.parse("20180321141111");
long between = date.getTime() - parse.getTime();
long day = between / (24 * 60 * 60 * 1000);
long hour = (between / (60 * 60 * 1000) - day * 24);
long min = ((between / (60 * 1000)) - day * 24 * 60 - hour * 60);
long s = (between / 1000 - day * 24 * 60 * 60 - hour * 60 * 60 - min * 60);
System.out.println(day + "天" + hour + "小时" + min + "分" + s + "秒");
总结:通过将时间转换成毫秒,计算差值,再转换成相应的格式。