A DESCRIPTION OF THE PROBLEM :
There is "11" but I think it should be "12" in the following sentence:
"The months unit is adjusted to have an absolute value less than 11, with the years unit being adjusted to compensate."
According to:
https://docs.oracle.com/javase/8/docs/api/java/time/Period.html#getMonths--
the method getMonths() "returns the months unit", so the following code returns the period's months unit after normalization:
java.time.Period.ofMonths(11).normalized().getMonths()
This code correctly returns 11, but 11 is not "an absolute value less than 11".
EXPECTED VERSUS ACTUAL BEHAVIOR :
EXPECTED -
Returns a copy of this period with the years and months normalized.
This normalizes the years and months units, leaving the days unit unchanged. The months unit is adjusted to have an absolute value less than 12, with the years unit being adjusted to compensate. For example, a period of "1 Year and 15 months" will be normalized to "2 years and 3 months".
The sign of the years and months units will be the same after normalization. For example, a period of "1 year and -25 months" will be normalized to "-1 year and -1 month".
This instance is immutable and unaffected by this method call.
ACTUAL -
Returns a copy of this period with the years and months normalized.
This normalizes the years and months units, leaving the days unit unchanged. The months unit is adjusted to have an absolute value less than 11, with the years unit being adjusted to compensate. For example, a period of "1 Year and 15 months" will be normalized to "2 years and 3 months".
The sign of the years and months units will be the same after normalization. For example, a period of "1 year and -25 months" will be normalized to "-1 year and -1 month".
This instance is immutable and unaffected by this method call.
URL OF FAULTY DOCUMENTATION :
https://docs.oracle.com/javase/8/docs/api/java/time/Period.html#normalized--
There is "11" but I think it should be "12" in the following sentence:
"The months unit is adjusted to have an absolute value less than 11, with the years unit being adjusted to compensate."
According to:
https://docs.oracle.com/javase/8/docs/api/java/time/Period.html#getMonths--
the method getMonths() "returns the months unit", so the following code returns the period's months unit after normalization:
java.time.Period.ofMonths(11).normalized().getMonths()
This code correctly returns 11, but 11 is not "an absolute value less than 11".
EXPECTED VERSUS ACTUAL BEHAVIOR :
EXPECTED -
Returns a copy of this period with the years and months normalized.
This normalizes the years and months units, leaving the days unit unchanged. The months unit is adjusted to have an absolute value less than 12, with the years unit being adjusted to compensate. For example, a period of "1 Year and 15 months" will be normalized to "2 years and 3 months".
The sign of the years and months units will be the same after normalization. For example, a period of "1 year and -25 months" will be normalized to "-1 year and -1 month".
This instance is immutable and unaffected by this method call.
ACTUAL -
Returns a copy of this period with the years and months normalized.
This normalizes the years and months units, leaving the days unit unchanged. The months unit is adjusted to have an absolute value less than 11, with the years unit being adjusted to compensate. For example, a period of "1 Year and 15 months" will be normalized to "2 years and 3 months".
The sign of the years and months units will be the same after normalization. For example, a period of "1 year and -25 months" will be normalized to "-1 year and -1 month".
This instance is immutable and unaffected by this method call.
URL OF FAULTY DOCUMENTATION :
https://docs.oracle.com/javase/8/docs/api/java/time/Period.html#normalized--
- duplicates
-
JDK-8194964 java.time.Period.normalized months value wrongly described
-
- Closed
-