Как конвертировать месяцы в летние месяцы в java

Я новый для java, и я хочу конвертировать месяцы в годы. Например, если у меня было 18 месяцев, и я разделил это на 12, у меня было бы 1,5 года, но я хочу, чтобы это было 1 год и 6 месяцев.

Спасибо за вашу помощь.

Ответ 1

Используйте модуль %.

int months = 18;
int years = months / 12; // 1
int remainingMonths = months % 12; // 6

Ответ 2

java.time

Структура java.time встроена в Java 8 и более поздних версий. Эти классы вытесняют старые неудобные классы времени, такие как java.util.Date, .Calendar и java.text.SimpleDateFormat. Команда Joda-Time также советует перейти на java.time.

Чтобы узнать больше, см. Учебник Oracle. И поиск Qaru для многих примеров и объяснений.

Большая часть функциональных возможностей 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 для "durations" : PnYnMnDTnHnMnS. В этом формате P отмечает начало, в то время как T отделяет часть years-months-days от части часов-минут-секунд (что не имеет значения в случае этого Вопроса).

String output = period.toString(); 

P1Y6M