2015-03-22 28 views
33

şimdi böyle bir şey kullanıyordum için .. Ben tarihlerde oldukça doğru olması gereken bir uygulama yazıyorum ve ben LOCALDATE örneklerini karşılaştırabilirsiniz acaba:karşılaştırmak nasıl LOCALDATE örneklerini Java 8

LocalDate localdate1 = LocalDate().now(); 
LocalDate localdate2 = someService.getSomeDate(); 
localdate1.equals(localdate2); 

Ama Uygulamamın bana biraz kafa karıştırıcı sonuçlar verdiğini fark ettim ve bunun tarih karşılaştırması nedeniyle olduğunu düşünüyorum.

ben uzun' 1970'den saati alarak ve bu ikisini karşılaştırmak hakkında düşünüyorum ama daha kolay olmalı, equals() LocalDate kılma eşittir gelmez kullanma o

+0

Ne tür kafa karıştırıcı sonuçlar? "Eşittir" için dox, "Tarihin aynı olduğunu garanti eder" der. Bu senin durumundaki doğru şeymiş gibi geliyor. – Lii

+0

Bu benim hatamdı, problemin kaynağı başka bir şeyde yatıyordu, ancak yine de bunun LocalDates'i karşılaştırmak için uygun bir yöntem olup olmadığını merak ediyorum :) – azalut

+0

1970'den itibaren bir sayım kullanma fikriniz için söyledi. Bu, kafa karıştırıcı ve hata ayıklaması zor. Modern java.time sınıfları böyle garip işlemelere olan ihtiyacı ortadan kaldırır. –

cevap

41

eminim:

int compareTo0(LocalDate otherDate) { 
    int cmp = (year - otherDate.year); 
    if (cmp == 0) { 
     cmp = (month - otherDate.month); 
     if (cmp == 0) { 
      cmp = (day - otherDate.day); 
     } 
    } 
    return cmp; 
} 

equals() sonucundan memnun değilseniz, LocalDate'un önceden tanımlı yöntemlerini kullanarak iyisiniz. isBefore()

  • bu yöntemin tüm compareTo0() yöntemi kullanılarak ve sadece cmp değerini kontrol olduğunu isEqual()
  • Bildirimi isAfter()

    • . Eğer hala garip bir sonuç alıyorsanız (ki bunu yapmamalısınız), lütfen bir giriş ve çıkış örneği ekleyin

  • +1

    _ "nesneleri karşılaştırmak vereceğim" _ Bunu anlamakta zorlanıyorum, bununla ne demek istiyorsun? LocalData.equals, LocalDate.isEqual'den nasıl farklıdır? Cevabınız biraz daha açıklayıcı olabilir. – Lii

    +0

    Üzgünüm @itachiUchiha düzenlenmesi hakkında hatalı – royB

    +0

    @Lii güncellenen benim cevabını kontrol edebilirsiniz. Önceki düzenlemeyi kaldırdım ve daha fazla bilgi ekledim – royB