Duration
Duration
表示两个时刻之间的时间间隔。另一个类似的Period
表示两个日期之间的天数:
LocalDateTime start = LocalDateTime.of(2019, 11, 19, 8, 15, 0);
LocalDateTime end = LocalDateTime.of(2020, 1, 9, 19, 25, 30);
Duration duration = Duration.between(start, end);
System.out.println(duration); // PT1235H10M30S
long chronoHours = start.until(end, ChronoUnit.HOURS);
Period period = LocalDate.of(2019, 11, 19).until(LocalDate.of(2020, 1, 9));
System.out.println(chronoHours); // 1235
System.out.println(period); // P1M21D
long days = duration.toDays();
long hours = duration.toHoursPart();
long minutes = duration.toMinutesPart();
long seconds = duration.toSecondsPart();
System.out.println("时间间隔: " + days + "天" + hours + "小时" + minutes + "分钟" + seconds + "秒");
// 时间间隔: 51天11小时10分钟30秒
注意到两个LocalDateTime
之间的差值使用Duration
表示,类似PT1235H10M30S
,表示1235小时10分钟30秒。而两个LocalDate
之间的差值用Period
表示,类似P1M21D
,表示1个月21天。
Duration
和Period
的表示方法也符合ISO 8601的格式,它以P...T...
的形式表示,P...T
之间表示日期间隔,T
后面表示时间间隔。如果是PT...
的格式表示仅有时间间隔。利用ofXxx()
或者parse()
方法也可以直接创建Duration
:
Duration d1 = Duration.ofHours(10); // 10 hours
Duration d2 = Duration.parse("P1DT2H3M"); // 1 day, 2 hours, 3 minutes
最后更新于
这有帮助吗?