I tried to create a max Duration in Java 8 by using Duration.ofMillis(Long.MAX_VALUE) but got a long overflow. How would I programmatically get the equivalent of a Duration.MAX_VALUE if it existed?
Edit: The long overflow was likely caused by an attempt to add to the value instead of during construction. Apologies for not having reproducible code.
long: The long data type is a 64-bit signed two's complement integer. It has a minimum value of -9,223,372,036,854,775,808 and a maximum value of 9,223,372,036,854,775,807 (inclusive). Use this data type when you need a range of values wider than those provided by int.
A Duration represents a directed distance between two points on the time-line. A negative duration is expressed by the negative sign of the seconds part. A duration of -1 nanosecond is stored as -1 seconds plus 999,999,999 nanoseconds.
PT means 'Period of Time'.
int v = 123543; int calc = -9876345; long: long is a signed 64-bit type and is useful for those occasions where an int type is not large enough to hold the desired value. It has a minimum value of -9,223,372,036,854,775,808 and a maximum value of 9,223,372,036,854,775,807 (inclusive).
It looks like Duration
is stored in seconds (up to Long.MAX_VALUE
) and nanoseconds (up to 999,999,999
). Then the biggest duration possible is:
Duration d = Duration.ofSeconds(Long.MAX_VALUE, 999_999_999);
When I print it (System.out.print(d)
) I get the following:
PT2562047788015215H30M7.999999999S
which means: 2562047788015215 hours, 30 minutes, and 7.999999999 seconds.
Simple:
Duration maxDur = ChronoUnit.FOREVER.getDuration();
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With