How to calculate the number of days in a period?
There is no way to do what you ask. The reason is that it is not possible from a Period
to deduce the actual number of calendar days in the period. A Period
is not tied to specific dates, once constructed in the way you show, it loses track of the actual calendar dates.
For example your first period represents a period of 1 month and 1 day. But the period does not care which month. It is simply a concept of "a month and a day".
If you need the number of days between two dates you should use ChronoUnit.DAYS.between
as Saket Mittal writes.
From the documentation:
To define an amount of time with date-based values (years, months, days), use the
Period
class. ThePeriod
class provides various get methods, such asgetMonths
,getDays
, andgetYears
.To present the amount >of time measured in a single unit of time, such as days, you can use theChronoUnit.between
method.LocalDate today = LocalDate.now(); LocalDate birthday = LocalDate.of(1960, Month.JANUARY, 1); Period p = Period.between(birthday, today); long p2 = ChronoUnit.DAYS.between(birthday, today); System.out.println("You are " + p.getYears() + " years, " + p.getMonths() + " months, and " + p.getDays() + " days old. (" + p2 + " days total)");
The code produces output similar to the following:
You are 53 years, 4 months, and 29 days old. (19508 days total)