在上一篇文章中,如何找到两次之间的差异?,我们LocalTime以秒为单位获得了两个对象之间的差异。在此示例中,我们将获得两个LocalDateTime对象之间的差异,并以年,月,日,小时,分钟,秒和毫秒为单位获取这些对象之间的差异。
package org.nhooo.example.datetime; import java.time.LocalDateTime; import java.time.Month; import java.time.temporal.ChronoUnit; public class LocalDateTimeDiff { public static void main(String[] args) { LocalDateTime from = LocalDateTime.of(2015, Month.JANUARY, 10, 10, 0, 30); LocalDateTime to = LocalDateTime.now(); LocalDateTime fromTemp = LocalDateTime.from(from); long years = fromTemp.until(to, ChronoUnit.YEARS); fromTemp = fromTemp.plusYears(years); long months = fromTemp.until(to, ChronoUnit.MONTHS); fromTemp = fromTemp.plusMonths(months); long days = fromTemp.until(to, ChronoUnit.DAYS); fromTemp = fromTemp.plusDays(days); long hours = fromTemp.until(to, ChronoUnit.HOURS); fromTemp = fromTemp.plusHours(hours); long minutes = fromTemp.until(to, ChronoUnit.MINUTES); fromTemp = fromTemp.plusMinutes(minutes); long seconds = fromTemp.until(to, ChronoUnit.SECONDS); fromTemp = fromTemp.plusSeconds(seconds); long millis = fromTemp.until(to, ChronoUnit.MILLIS); System.out.println("From = " + from); System.out.println("To = " + to); System.out.printf("The difference is %s years, %s months, %s days, " + "%s hours, %s minutes, %s seconds, %s millis", years, months, days, hours, minutes, seconds, millis); } }
上面的代码片段在执行时的结果是:
From = 2015-01-10T10:00:30 To = 2016-02-11T17:20:40.503 The difference is 1 years, 1 months, 1 days, 7 hours, 20 minutes, 10 seconds, 503 millis