docs/bugpattern/time/JavaPeriodGetDays.md
A java.time.Period represents a distance of civil time in years, months, and
days. For example, a period could represent "1 month, 2 days", or another period
could represent "32 days".
The method Period.getDays() only extracts the "days" portion of the Period, so
a period representing "1 month, 2 days" would return 2 from its getDays().
In many circumstances, developers use period.getDays() when they think it
represents "the total days" in the period, especially when the Period is
computed using LocalDate.until(LocalDate).
In this instance, a developer has used period.getDays() without consulting
either the months or years portion of the Period. In all likelihood, the
developer would be better suited by using
org.threeten.extra.Days.between(LocalDate, LocalDate) to compute the number of
days between two dates.
For example:
LocalDate day1, day2; ...
if (day1.until(day2).getDays() > 31) { // No more than 31 days between them
// Oops, this is always false, even if day1 is 4 "months" behind
}
if (Days.between(day1, day2).compareTo(Days.of(31)) > 0) {
// Can actually be executed!
}