2015-03-22 3 views
33

Я пишу приложение, которое должно быть достаточно точными в датах, и я удивляюсь, как я могу сравнить LocalDate экземпляров .. теперь я использую что-то вроде:Как для сравнения LocalDate экземпляров Java 8

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

Но Я заметил, что мое приложение дает мне некоторые запутанные результаты, и я думаю, что это из-за сравнения даты.

Я имею в виду получение времени с 1970' в длинные и сравнить эти два, но я должен быть проще, я в этом уверен

+0

Какие путаные результаты? Dox для 'equals' say _" Сравнивает ... обеспечение того, что дата такая же "_. В вашем случае это звучит правильно. – Lii

+0

Это была моя ошибка, источник проблемы лежал в чем-то другом, однако мне все еще интересно, если это подходящий способ сравнить LocalDates :) – azalut

+0

Что касается вашей идеи использования отсчета от эпохи 1970 года, избегайте делать что. Это запутанно и сложно отлаживать. Современные классы java.time устраняют необходимость в такой неудобной обработке. –

ответ

41

Использование equals() LocalDate делает переопределения равен:

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(), вы можете использовать предопределенные методы LocalDate.

Обратите внимание, что все эти метода используют метод compareTo0() и просто проверить значение cmp. если вы все еще получаете странный результат (чего не следует), пожалуйста, приложите пример ввода и вывода

+1

_ «даст сравнение объектов» _ Мне это трудно понять, что вы подразумеваете под этим? Как «LocalData.equals» отличается от «LocalDate.isEqual»? Ваш ответ может использовать немного больше объяснений. – Lii

+0

Извините, что редактирование @itachiUchiha было неверным – royB

+0

@Lii вы можете проверить мой обновленный ответ. я удалил предыдущее редактирование и добавил дополнительную информацию – royB

Смежные вопросы