Durations in existing JDK APIs (original) (raw)

Martin Buchholz martinrb at google.com
Wed May 30 17:36:36 UTC 2018


Obvious progress would seem to be more conversion methods. Conversion code tends to be annoying/errorprone because of having to deal with overflow.

Stephen/Doug: is there any reason we didn't add conversions between Duration and TimeUnit when we added conversions to ChronoUnit?

Here's a strawman:

/**
 * Converts the given time duration to this unit.
 *
 * @param duration the time duration
 * @return the converted duration in this unit,
 * or {@code Long.MIN_VALUE} if conversion would negatively overflow,
 * or {@code Long.MAX_VALUE} if it would positively overflow.
 */
public long convert(Duration duration) {
    long s = convert(duration.getSeconds(), SECONDS);
    if (s == Long.MIN_VALUE) return s;
    long n = convert(duration.getNano(), NANOSECONDS);
    assert n >= 0 && n < 1_000_000_000;
    return (s + n < s) ? Long.MAX_VALUE : s + n;
}


More information about the core-libs-dev mailing list