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]
(https://github.com/JakeWharton/ThreeTenABP).
Проект ThreeTen-Extra расширяет java.time дополнительными классами. Этот проект является полигоном для возможных будущих дополнений к java.time. Здесь вы можете найти некоторые полезные классы, такие как Interval
, YearWeek
, YearQuarter
и другие.
Period
Класс Period
отслеживает промежуток времени, не связанный с временной шкалой, в виде лет, месяцев и дней. Обязательно назовите normalized
как привычку, чтобы заставить его пересчитать восемнадцать месяцев с точки зрения года и шести месяцев.
Period period = Period.ofMonths( 18 ).normalized();
Извлечь количество лет и месяцев.
int years = period.getYears();
int months = period.getMonths();
Вы можете позвонить toString
, чтобы представить это значение в стандартном формате ISO 8601 для «длительностей» : PnYnMnDTnHnMnS
. В этом формате P
отмечает начало, а T
отделяет часть лет-месяцев-дней от части часов-минут-секунд (не имеет значения в случае с этим Вопросом).
String output = period.toString();
P1Y6M