为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

叮当猫咪 2021-12-10 14:53:13
给定两个Date包含小时和分钟的对象,我如何优雅地找出其中哪一个具有一天中最早的时间?例如,如果date1是2018-01-01在09:00,并且date2是2018-01-02在08:00,那么这个规范,date2 < date1。
查看完整描述

3 回答

?
郎朗坤

TA贡献1921条经验 获得超9个赞

如果您转换之前,您可以使用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();

}

并像这样比较:


time1.compareTo(time2);

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


public static int compareTimeOfDates(Date date1, Date date2) {

    return convertToLocalTimeViaInstant(date1).compareTo(convertToLocalTimeViaInstant(date2));

}


查看完整回答
反对 回复 2021-12-10
?
交互式爱情

TA贡献1712条经验 获得超3个赞

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


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;

}


查看完整回答
反对 回复 2021-12-10
?
不负相思意

TA贡献1777条经验 获得超10个赞

编辑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


希望这有帮助。


查看完整回答
反对 回复 2021-12-10
  • 3 回答
  • 0 关注
  • 208 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信