一,时间差:
方式1)时间差:核心原理——System类中的有关时间的API
示例:纳秒级别的时间差:
// 当前系统的时间
long nanoTimeStart = System.nanoTime();
// ...许多代码过去之后...
System.out.println("时间差:");
System.out.println(System.nanoTime()-nanoTimeStart);
方式2)时间差:核心原理——LocalDateTime类(Java8)
// 此刻的时间:
LocalDateTime fromDate= LocalDateTime.now();
// ...许多代码飘过...
LocalDateTime toDate= LocalDateTime.now();
// 时间差,(以分钟为单位)
long minutes = ChronoUnit.MINUTES.between(fromDate, toDate);
// 时间差,(以小时为单位)
long hours = ChronoUnit.HOURS.between(fromDate, toDate);
方式3)时间差:核心原理——SimpleDateFormat类
转载:https://blog.csdn.net/weixin_38676276/article/details/86711206
一、分别计算日、时、分;
/**
* 用SimpleDateFormat计算时间差
*/
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 start = format.parse("20180321141111");
Date end = format.parse("20180321141111");
long between = end.getTime() - start.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 + "秒");
PS:通过将时间转换成毫秒,计算差值,再转换成相应的格式。
二,