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

时间:2018-10-26 21:59:22

标签: java date

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

例如如果date12018-01-0109:00,并且date22018-01-0208:00,则根据此规范,date2 < date1。 / p>

4 个答案:

答案 0 :(得分:4)

如果您之前转换过compareTo,则可以使用LocalTime的{​​{1}}-方法。

这样转换(位于https://www.baeldung.com/java-date-to-localdate-and-localdatetime):

Date

并像这样比较:

public static LocalTime convertToLocalTimeViaInstant(Date dateToConvert) {
    return dateToConvert.toInstant()
            .atZone(ZoneId.systemDefault())
            .toLocalTime();
}

如果您要使用方法,则可以使用如下转换:

time1.compareTo(time2);

答案 1 :(得分:0)

您可以尝试执行以下操作:

boolean compareTime(Date date1, Date date2) {
    DateFormat df = new SimpleDateFormat("HHmm");
    int timeDate1 = Integer.valueOf(df.format(date1));
    int timeDate2 = Integer.valueOf(df.format(date2));
    return timeDate1 >= timeDate2;
}

答案 2 :(得分:-2)

编辑2:

//just a sample. base on your case, set the date you have to here.
        Date date1 = Calendar.getInstance().getTime(); 
        Date date2 = Calendar.getInstance().getTime();

        LocalDateTime lcdate1 = date1.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
        LocalDateTime lcdate2 = date2.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();


        int date1Hour = lcdate1.getHour();
        int date1Minute = lcdate1.getMinute();

        int date2Hour = lcdate2.getHour();
        int date2Minute = lcdate2.getMinute();

更多详细信息在这里:https://docs.oracle.com/javase/8/docs/api/java/time/LocalDateTime.html

希望获得帮助。

答案 3 :(得分:-2)

int compareTimeOfDate(Date a, Date b) {
    LocalDateTime localA = a.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
    int hourA = localA.getHour();
    int minuteA = localA.getMinute();

    LocalDateTime localB = date1.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
    int hourB = localB.getHour();
    int minuteB = localB.getMinute();

    if (hourA == hourB && minuteA == minuteB) {
        return 0;
    }

    if (hour1 < hour2 || hour1 == hour2 && minute1 < minute2) {
        return -1;
    }

    return 1;
}