Так как кажется, люди больше обеспокоены голосование вниз, чем чтение актуального вопроса, значения I должны получать в нижнем поле, и мой вопрос прямо под нимразница Меры между датами
Мне нужно найти возраст ребенка на основе введенной пользователем даты рождения и сегодняшней даты. Пользователь имеет возможность просматривать возраст в годах, месяцах, неделях и днях. Мне нужно убедиться, что расчеты рассчитаны на високосные годы. Я прошел несколько сообщений, которые предлагают разные трюки, но до сих пор я не нашел ничего, что рассчитывало бы надежные числа. Ближайшим я пришел к решению:
final Calendar bday = Calendar.getInstance();
bday.set(1991, 3, 27);
final Calendar today = Calendar.getInstance();
int yearsDiff = today.get(Calendar.YEAR) - bday.get(Calendar.YEAR); // yearsDiff: 24
if(bday.get(Calendar.MONTH) > today.get(Calendar.MONTH) ||
(bday.get(Calendar.MONTH) == today.get(Calendar.MONTH) && bday.get(Calendar.DATE) > today.get(Calendar.DATE))) {
yearsDiff --;
}
final int monthsDiff = yearsDiff * 12 + today.get(Calendar.MONTH) - bday.get(Calendar.MONTH); // monthsDiff: 296
final long timeOne = bday.getTime().getTime();
final long timeTwo = today.getTime().getTime();
final long oneDay = 1000 * 60 * 60 * 24;
final long delta = (timeTwo - timeOne)/oneDay;
final long year = delta/365; // year: 24
final long rest = delta % 365; // rest: 232 delta: 8992
final long month = rest/30; // month: 7
final long rest2 = rest % 30; // rest2: 22 rest: 232
final long weeks = rest2/7; // weeks: 3
final long days = rest2 % 7; // days: 1 rest2: 22
yearsDiff и monthsDiff оба правильные. Правильные значения (по состоянию на сегодняшний день, 12-09-2015) являются:
years: 24
months: 296
weeks: 1289
days: 9023
Вы заметите, что есть две разные я расчета некоторые из этих значений. Это потому, что я просматриваю разные ответы и пытаюсь найти лучшее решение.
Как я могу найти правильное количество недель и дней?
есть вопросы? – Dima
@Dima Посмотрите на последнюю коробку. Значения не совпадают с тем, что они должны быть. –
Неясно, каким образом они «не выстраиваются в линию» - что, по вашему мнению, неверно, и что это должно быть? –