Как я могу получить разницу между двумя выбранными датами из календаря в Android в днях, месяцах и годах? Мы знаем все, что месяцы иногда имеют 30 дней, а иногда 31 день, а в феврале 28 дней - каждые 4 года - 29 дней. Я хочу получить результат, например, такой: 2 года и 6 месяцев и 24 дня. Я пытаюсь использовать LocalDate
, так что это мой код:
public void onSelectedDayChange(@NonNull CalendarView view,
final int year, final int month, final int dayOfMonth) {
textView.setText(String.valueOf(dateDiff(year,month,dayOfMonth)));
}
public Period dateDiff(int year,int month,int day){
final int Day = c.get(Calendar.DAY_OF_MONTH);
final int Month = c.get(Calendar.MONTH);
final int Year = c.get(Calendar.YEAR);
LocalDate localDate1 = LocalDate.of(year,month,day);
LocalDate localDate2 = LocalDate.of(Year,Month,Day);
Period period = Period.between(localDate2,localDate1);
return period;
}
Я проверил код, но получил неверный результат. Когда я проверил это с днями (05/05/2020), я получил 8 дней, но разница составляет 7 дней, потому что у "апреля" есть 30 дней, и для выбранного дня (02/07/2020) я получил 2 месяца и 8 дней или правильный ответ 2 месяца и 7 дней. Сначала я пытаюсь получить правильный результат, если есть функция или формула расчета для решения этого неправильного результата, это поможет мне.
Наконец, я получаю в результате каждый раз что-то вроде (P2M8D), что означает 2 месяцы и 8 дней, или, например, (P7D), что означает 7 дней, так как я могу изменить этот текст на понятный, как 2 месяца и 8 дней или 7 дней, как 2 примера, потому что я нашел проблему в результате, потому что мы смешали между цифрами и символами.