2013-08-30 12 views
10

Używam zmiennej jodobime DateTime. Chciałbym sprawdzić, czy DateTime "x" jest po DateTime "y". Funkcja isAfter akceptuje tylko parametr long, a nie DateTime, który uważam za bardzo dziwny. Jaki jest najlepszy sposób na porównanie dwóch s DateTime s?Sprawdź, czy data X jest za datą Y z JodaTime

Odpowiedz

19

Istnieje metoda boolean isAfter(ReadableInstant instant) w ReadableInstant, więc gdy DateTime implementuje ReadableInstant, powinien również zaakceptować DateTime.

+0

widziałem to przeciążenie, ale zignorowałem to, ponieważ nie wiedziałem w Mógłbym przekazać w 'DateTime' kiedy oczekiwał" ReadableInstant ". Dzięki! –

+2

@Teifi Jeśli to odpowiedział na twoje pytanie, powinieneś rozważyć akceptację. –

+0

Powyższa odpowiedź jest jedną z najlepszych metod używania –

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

działa na mnie

0

Istnieje również getMillis() metoda dziedziczona z BaseDateTime, który daje wartość long reprezentujący daty, można porównać dwa long wartości do określenia, co jest przed i za ile .

+0

Jak już wspomniano, jeśli chcesz poznać dokładną różnicę między dwoma obiektami DateTime, aby uzyskać dodatkowe dane wyjściowe w dalszej części kodu. –

2

Metoda isAfter Opis

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 

Zajmuje ReadableInstant jako argument tak DateTime mogą być również przekazywane jak wynika z 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 

powyższe dane są podjęto z joda api docs

+0

Kiedy [docs] (http://joda-time.sourceforge.net/apidocs/org/joda/time/base/AbstractInstant.html#isAfter (org.joda.time.ReadableInstant)) mówią "porównując wyłącznie przez milisekundę "co oznaczają" wyłącznie przez milisekundę "? Chodzi tylko o to, że strefa czasowa jest zignorowana, prawda? –

Powiązane problemy