给出两个包含小时和分钟的Date
对象,如何优雅地找出其中哪个对象是一天中最早的时间?
例如如果date1
在2018-01-01
是09:00
,并且date2
在2018-01-02
是08:00
,则根据此规范,date2 < date1
。 / p>
答案 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;
}