period.getDays () возвращает каждый раз 0 в android - PullRequest
0 голосов
/ 25 апреля 2020

Я пытаюсь получить правильную разницу времени между текущим днем ​​и вторым выбранным днем ​​из календаря. В этом случае я использую LocalDate и 3 метода getDays() getMonths() getYears(), чтобы получить день и месяц, а также год:

public int 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);
    int dayDiff = period.getDays();

    return dayDiff;
}

public void onSelectedDayChange(@NonNull CalendarView view, final int year, final int month, final int dayOfMonth) {
    textView.setText(""+dateDiff(year, month, day));
}

Но каждый раз, когда я проверяю код, который я получил в textView «0», я пытаюсь увидеть значение переменной «period», и я получил (P2M8D «этот результат получен в моем примере»), что означает, что переменная period считает разницу между днями и проблемой в методы. Как я могу решить эту проблему?

Ответы [ 2 ]

0 голосов
/ 27 апреля 2020

Здесь это должно помочь.

public int dateDiff(int year,int month,int day) {
  Calendar thatDay = Calendar.getInstance();
  thatDay.set(Calendar.DAY_OF_MONTH,day);
  thatDay.set(Calendar.MONTH,month); // 0-11 so 1 less
  thatDay.set(Calendar.YEAR, year);

  Calendar today = Calendar.getInstance();

  long diff = today.getTimeInMillis() - thatDay.getTimeInMillis(); //result in millis
  long days = diff / (24 * 60 * 60 * 1000);
  return days;
}
0 голосов
/ 26 апреля 2020

Проблема в этом проекте заключается в названии переменных, я использую одно и то же имя текущего времени и выбранного времени, я просто меняю первую букву на заглавную, но это создает проблему. Вот почему каждый раз, когда я запускаю проект, получаю 0, я меняю программу так:

public int dateDiff(int year,int month,int day) {
final int dayOfToday = c.get(Calendar.DAY_OF_MONTH);
final int monthOfToday = c.get(Calendar.MONTH);
final int yearOfToday = c.get(Calendar.YEAR);
LocalDate localDate1 = LocalDate.of(year,month,day);
LocalDate localDate2 = LocalDate.of(Year,Month,Day);

Period period = Period.between(localDate2,localDate1);
int dayDiff = period.getDays();

return dayDiff;
}
...