A time-based amount of time, such as '34.5 seconds'.
This class models a quantity or amount of time in terms of seconds and nanoseconds. It can be accessed using other duration-based units, such as minutes and hours. In addition, the
DAYS unit can be used and is treated as exactly equal to 24 hours, thus ignoring daylight savings effects. See
Period for the date-based equivalent to this class.
A physical duration could be of infinite length. For practicality, the duration is stored with constraints similar to
Instant. The duration uses nanosecond resolution with a maximum value of the seconds that can be held in a
long. This is greater than the current estimated age of the universe.
The range of a duration requires the storage of a number larger than a
long. To achieve this, the class stores a
long representing seconds and an
int representing nanosecond-of-second, which will always be between 0 and 999,999,999. The model is of a directed duration, meaning that the duration may be negative.
The duration is measured in "seconds", but these are not necessarily identical to the scientific "SI second" definition based on atomic clocks. This difference only impacts durations measured near a leap-second and should not affect most applications. See
Instant for a discussion as to the meaning of the second and time-scales.
This is a value-based class; use of identity-sensitive operations (including reference equality (
==), identity hash code, or synchronization) on instances of
Duration may have unpredictable results and should be avoided. The
equals method should be used for comparisons.