如何比较 Java 8 中 Date 对象之间的时间?

Sal*_*ene -4 java date

给定两个Date包含小时和分钟的对象,我如何优雅地找出其中哪一个具有一天中最早的时间?

例如,如果date12018-01-0109:00,并且date22018-01-0208:00,那么这个规范,date2 < date1

csa*_*hof 5

如果您转换之前,您可以使用compareTo-Method 。LocalTimeDate

像这样转换(在https://www.baeldung.com/java-date-to-localdate-and-localdatetime找到):

public static LocalTime convertToLocalTimeViaInstant(Date dateToConvert) {
    return dateToConvert.toInstant()
            .atZone(ZoneId.systemDefault())
            .toLocalTime();
}
Run Code Online (Sandbox Code Playgroud)

并像这样比较:

time1.compareTo(time2);
Run Code Online (Sandbox Code Playgroud)

如果你想使用一种方法,你可以使用这样的转换:

public static int compareTimeOfDates(Date date1, Date date2) {
    return convertToLocalTimeViaInstant(date1).compareTo(convertToLocalTimeViaInstant(date2));
}
Run Code Online (Sandbox Code Playgroud)

  • @SalvatoreIovene 我不认为这没有抓住重点。它将您的 Date 对象转换为您可以比较的 LocalTime 对象。唯一缺少的是生成的 LocalTime 对象可能具有非零秒或纳秒,但这无关紧要。 (3认同)