Я использую переменную jodatime DateTime
. Я хотел бы проверить, является ли DateTime 'x' после DateTime 'y'. Функция isAfter принимает только параметр long
, а не DateTime
, который я нахожу очень странным. Каков наилучший способ сравнить два DateTime
s?
Убедитесь, что дата X после даты Y с JodaTime
Ответ 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
, чтобы определить, что до и сколько.