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; programmers should treat instances that are equal as interchangeable and should not use instances for synchronization, or unpredictable behavior may occur. For example, in a future release, synchronization may fail. The equals
method should be used for comparisons.