Да, я знаю, что есть много подобных вопросов, но я не нашел никакого решения.Как конвертировать число дней в несколько лет, месяцев, дней?
Проблема заключается в том, чтобы получить годы, месяцы, дни от дней.
Главная проблема заключается в:
1 месяц = 30 дней
1 год = 365 дней
Например:
30 days = 0 year, 1 month, 0 days
364 days = 0 year, 11 months, 29 days
И у меня есть проблема. Как я могу это сделать? Вот мой код:
int totalDays = 364;
int daysInMonth = 30; //30.41666666666667
int onlyYears = Math.floor(totalDays/365).intValue();
int onlyMonths = Math.floor((totalDays - (onlyYears*365))/daysInMonth).intValue();
int onlyDays = totalDays - onlyMonths*daysInMonth - onlyYears*365;
println(onlyYears + ":" + onlyMonths + ":" + onlyDays);
Таким образом, если DAYSINMONTH = 30 он работает правильно для totalDays 30 = 1 месяц, 40 = 1 месяц и 10 дней и т.д., но если я установить totalDays в 364 код возвращает 12 месяцев и 4 дней, но 11 месяцев и 29 дней. Если я установил daysInMonth на 30.41666666666667, он будет работать в течение 364, но неправильно для 30, 40 и т. Д.
Какая версия Java/Groovy вы используете? –
Ну, это будет зависеть от того, какой день и месяц (и год для летних лет) вы находитесь. 30 дней, начинающихся с 1 января, и 30 дней, начинающихся 1 февраля, должны давать разные результаты. Или я не понимаю, чего вы пытаетесь достичь? – amit
Java 7, Groovy 2.4.3 – Gwalk