<i18n dev> RFR: 8367704: Fix minor documentation issues in java.time.** [v6]

Roger Riggs rriggs at openjdk.org
Wed Sep 17 14:00:49 UTC 2025


On Tue, 16 Sep 2025 21:55:36 GMT, Pavel Rappo <prappo at openjdk.org> wrote:

>> src/java.base/share/classes/java/time/Duration.java line 480:
>> 
>>> 478:      * <p>
>>> 479:      * The result of this method can be a negative duration if the end is before the start.
>>> 480:      * To guarantee a positive or zero duration call {@link #abs()} on the result.
>> 
>> A bit of a quibble here.  Checking the spec of the `isPositive()` method, it does not include zero.
>> If the you intend the "positive" to be the same as the result of the `isPositive` method then I think its best to omit the "zero".  The `abs` method would not change anything to be a zero.
>
> I don't understand. Let's consider an example:
> 
>     jshell> import java.time.*
>     
>     jshell> var i = Instant.now();
>     i ==> 2025-09-16T21:44:06.464393Z
>     
>     jshell> Duration.between(i, i).abs().isPositive()
>     $3 ==> false
> 
> So, `abs()` does not translate any duration into positive duration. There exists duration `d` such that `!d.abs().isPositive()`. Any duration for which `d.equals(Duration.ZERO)` is like that.

Joe's suggestion of "non-negative" (instead of positive) is probably the best replacement.

Mentioning using `abs()` with a zero argument didn't parse well.

-------------

PR Review Comment: https://git.openjdk.org/jdk/pull/27296#discussion_r2355624787


More information about the i18n-dev mailing list