ТЛ; др
Period.between(
LocalDate.of( 2011 , 1 , 1) ,
LocalDate.now( ZoneId.of( "America/Montreal" ) )
).toString(); // Example: P5Y4M2D
java.time
Ответ Флойд правильный, но устаревший. Проект Joda-Time находится в режиме обслуживания, и его команда советует перейти на классы java.time.
LocalDate
Класс LocalDate
представляет дату без времени суток и без часового пояса.
LocalDate start = LocalDate.of( 2011 , 1 , 1 );
LocalDate stop = LocalDate.of( 2016 , 1 , 15 );
ChronoUnit
Класс ChronoUnit
вычисляет прошедшее время.
long elapsedInYears = ChronoUnit.YEARS.between( start , stop );
long elapsedInMonths = ChronoUnit.MONTHS.between( start , stop );
long elapsedInDays = ChronoUnit.DAYS.between( start , stop );
Period
Если вы хотите, чтобы один промежуток времени был разбит на число лет и на количество месяцев и на количество дней, используйте Period
класс.
Period p = Period.between( start , stop );
Чтобы получить удобный формат ISO 8601 в формате String, позвоните по номеру toString
. Формат PnYnMnDTnHnMnS
, где P
отмечает начало, а T
отделяет годы-месяцы-дни от часов-минут-секунд. Таким образом, полтора месяца будет P1M15D
.
String output = p.toString();
Если вы хотите, чтобы каждая часть представляла собой число, вызовите методы получения.
int years = p.getYears();
int months = p.getMonths();
int days = p.getDays();
О java.time
Платформа java.time встроена в Java 8 и более поздние версии. Эти классы вытесняют проблемные старые классы даты и времени, такие как java.util.Date
, .Calendar
и & java.text.SimpleDateFormat
.
Проект Joda-Time , теперь в режиме обслуживания , рекомендует перейти на java.time.
Чтобы узнать больше, см. Oracle Tutorial . И поиск переполнения стека для многих примеров и объяснений.
Большая часть функциональности java.time перенесена в Java 6 & 7 в ThreeTen-Backport и дополнительно адаптирована для Android в ThreeTenABP (см. Как использовать… ).
Проект ThreeTen-Extra расширяет java.time дополнительными классами. Этот проект является полигоном для возможных будущих дополнений к java.time. Здесь вы можете найти некоторые полезные классы, такие как Interval
, YearWeek
, YearQuarter
и другие.