Подтвердить что ты не робот

Сравнение даты с использованием "isBefore" в Java Joda Time

Есть ли способ сравнить только даты для объекта DateTime с помощью функции isBefore?

Например,

DateTime start = new DateTime(Long.parseLong(<someInput>));
DateTime end   = new DateTime(Long.parseLong(<someInput>));

Теперь, когда я это сделаю,

while (start.isBefore(end)) { 
   // add start date to the list
   start = start.plusDays(1);
}  

Это приводит к непоследовательному поведению (для моего сценария), так как оно учитывает время, а то, что я хочу, - это иметь только даты, сравниваемые с использованием isBefore. Есть ли способ, которым я могу это сделать?

Пожалуйста, дайте мне знать.

Спасибо!

4b9b3361

Ответ 2

Другая стратегия заключается в форматировании.

DateFormat df = new SimpleDateFormat("MM/dd/yyyy");
DateTime newStart = df.parse(start);
DateTime newEnd = df.parse(end);

while (newStart.isBefore(newEnd)) { 
  // add start date to the list
  newStart = newStart.plusDays(1);
}    

Ответ 3

Переключитесь на использование LocalDate, а не на DateTime. Концепция в JodaTime является "частичной" (см. Интерфейс ReadablePartial).

Ответ 4

Вы можете установить время DateTime на ноль (что означает полночь) после разбора:

// withTime sets hours, minutes, seconds, milliseconds
DateTime start = new DateTime(Long.parseLong(<someInput>)).withTime(0, 0, 0, 0);
DateTime end   = new DateTime(Long.parseLong(<someInput>)).withTime(0, 0, 0, 0);

Или используйте один из других классов времени Joda; там гораздо больше, чем DateTime! Если вы имеете дело только с датами, вы, вероятно, захотите использовать LocalDate вместо DateTime.