Убедитесь, что дата X после даты Y с JodaTime

Я использую переменную jodatime DateTime. Я хотел бы проверить, является ли DateTime 'x' после DateTime 'y'. Функция isAfter принимает только параметр long, а не DateTime, который я нахожу очень странным. Каков наилучший способ сравнить два DateTime s?

Ответ 1

В ReadableInstant есть метод boolean isAfter(ReadableInstant instant), так как DateTime реализует ReadableInstant, он также должен принимать DateTime.

Ответ 2

Метод isAfter Описание

public boolean isAfter(ReadableInstant instant)

    Is this instant after the instant passed in comparing solely by millisecond.

    Specified by:
        isAfter in interface ReadableInstant

    Parameters:
        instant - an instant to check against, null means now 
    Returns:
        true if the instant is after the instant passed in

В качестве аргумента требуется ReadableInstant, поэтому DateTime также может быть передано как ясно из DateTime Hierarchy

Class DateTime

java.lang.Object
  extended by org.joda.time.base.AbstractInstant
      extended by org.joda.time.base.AbstractDateTime
          extended by org.joda.time.base.BaseDateTime
              extended by org.joda.time.DateTime

All Implemented Interfaces:
    Serializable, Comparable<ReadableInstant>, ReadableDateTime, ReadableInstant 

Более подробная информация взята из joda api docs

Ответ 3

public static void main(String[] args) {
    System.err.println(new DateTime().isAfter(new DateTime().plusDays(1)));
}

работает для меня

Ответ 4

Существует также метод getMillis(), унаследованный от BaseDateTime, который дает вам значение long, представляющее даты, вы можете сравнить два значения long, чтобы определить, что до и сколько.