Java与一天中的自定义开始结束时间进行两次比较

时间:2014-03-04 12:48:03

标签: java time date-format

我得到两次(格式为HH:mm aa)说下午6:00到下午5:00。我需要一些通用和最短的方法来比较这两次。

例如: -

说我比较下午4点到晚上7点,然后我应该到下午4点>晚上7点,因为我的开始时间是下午6点,结束时间是下午5点

请帮忙。

3 个答案:

答案 0 :(得分:1)

         // Per the JavaDoc:
         // the value 0 if the argument Date is equal to this Date; a value 
         // less than 0 if this 
         // Date is before the Date argument; and a value greater
         // than 0 if this Date is after 
         // the Date argument.

         if (startDate.compareTo(endDate) < 0)
         {
            // before
         }
         else if (startDate.compareTo(endDate) == 0)
         {
            // same
         }
         else if (startDate.compareTo(endDate) > 0)
         {
            // after
         }
         else if (startDate.compareTo(firstDate) > 0 && startDate.compareTo(secondDate) < 0)
         {
            // between
         }

根据需要插入您的条件。

答案 1 :(得分:1)

Java中内置的java.util.Date.Calendar类非常麻烦。而是在Java 8中使用Joda-Time库或新的java.time包(受Joda-Time启发,由JSR 310定义)。

约达时间

Joda-Time内置了对Java Comparator的支持。 Joda-Time提供了自己的比较方法:isBeforeisBeforeNowisAfterisAfterNowisEqual

示例代码

DateTimeZone timeZone = DateTimeZone.forID( "Europe/Paris" );
DateTime now = new DateTime( timeZone );
DateTime yesterday = now.minusDays( 1 );
boolean isYesterdayBeforeNow = yesterday.isBefore( now ); // TRUE.

java.time

在java.time包中,ZonedDateTime提供isBeforeisAfter等方法。

答案 2 :(得分:0)

Datebeforeafter方法,可以是compared to each other

所以你可以这样做:

if(todayDate.after(historyDate) && todayDate.before(futureDate)) {
    // In between
}