Другие ответы правильно решили вашу конкретную проблему.
LocalDate
Но есть более масштабное решение.Если вы начинаете только с дат, без времени и без часовых поясов, вам следует использовать класс LocalDate
вместо DateTime
.
Часовой пояс
Ваш код игнорирует критическую проблему часовых поясов.Часовые пояса имеют значение даже для LocalDate, когда пытаются определить «сегодня».Вы хотите сегодняшнюю дату в Монреале или в Париже.В Париже наступает новый день.Когда вы опускаете часовой пояс, вы получаете текущий часовой пояс JVM по умолчанию.
Joda-Time Can Parse
Кроме того, пусть Joda-Time выполняет анализ.Нет необходимости использовать java.util.Date & .Calendar вообще.Символы форматирования Joda-time почти такие же, как java.util.Date, но не совсем так, чтобы проконсультироваться с документом.В этом случае оно идентично.
DateTimeFormatter formatter = DateTimeFormat.forPattern( "MM/dd/yyyy" );
LocalDate past = formatter.parseLocalDate( "06/22/2010" );
DateTimeZone = DateTimeZone.forID( "America/Montreal" ): // match time zone intended for that input string.
int days = Days.daysBetween( past, LocalDate.now( timeZone ) );