public final class Duration extends Object implements Comparable<Duration>, IEquatable<Duration>, IEquatableEpsilon<Duration>, ImmutableValueType
JulianDate
type. It stores a
number of days as an int
and a number of seconds as a double
.Constructor and Description |
---|
Duration()
Initializes a new instance.
|
Duration(Duration timeSpan)
|
Duration(Duration timeSpan,
TimeStandard standard)
|
Duration(int days,
double seconds)
Initializes a new instance of
Duration from a specified number
of days and seconds. |
Duration(int days,
double seconds,
TimeStandard standard)
Initializes a new instance of
Duration from a specified number
of days and seconds. |
Duration(int days,
int hours,
int minutes,
double seconds)
Initializes a new instance of
Duration from a specified number
of days, hours, minutes, and seconds. |
Duration(int days,
int hours,
int minutes,
double seconds,
TimeStandard standard)
Initializes a new instance of
Duration from a specified number
of days, hours, minutes, and seconds. |
Modifier and Type | Method and Description |
---|---|
Duration |
add(Duration other)
Adds the specified
Duration to this instance. |
static Duration |
add(Duration left,
Duration right)
Adds two specified
Duration instances. |
Duration |
addDays(double days)
|
Duration |
addSeconds(double seconds)
|
int |
compareTo(Duration other)
Compares this instance with another instance of the same type.
|
Duration |
divide(double constant)
Divides the
Duration by a constant. |
double |
divide(Duration divisor)
|
static Duration |
divide(Duration dividend,
double divisor)
Divides the
Duration by a constant. |
static double |
divide(Duration dividend,
Duration divisor)
Divides the
Duration by another duration. |
static boolean |
equals(Duration left,
Duration right)
Returns
true if two Durations are exactly equal, within the limits
of floating point precision. |
boolean |
equals(Object obj)
|
boolean |
equalsEpsilon(Duration other,
double epsilon)
|
boolean |
equalsType(Duration other)
|
static Duration |
fromDays(double days)
Returns a
Duration that represents the specified number of days. |
static Duration |
fromDays(double days,
TimeStandard standard)
Returns a
Duration that represents the specified number of days
using the specified time standard. |
static Duration |
fromHours(double hours)
Returns a
Duration that represents the specified number of hours. |
static Duration |
fromHours(double hours,
TimeStandard standard)
Returns a
Duration that represents the specified number of hours using the
specified time standard. |
static Duration |
fromMinutes(double minutes)
Returns a
Duration that represents the specified number of minutes. |
static Duration |
fromMinutes(double minutes,
TimeStandard standard)
Returns a
Duration that represents the specified number of minutes using the
specified time standard. |
static Duration |
fromSeconds(double seconds)
Returns a
Duration that represents the specified number of seconds. |
static Duration |
fromSeconds(double seconds,
TimeStandard standard)
Returns a
Duration that represents the specified number of seconds using the
specified time standard. |
int |
getDays()
Gets the day component of this
Duration . |
static Duration |
getMaxValue()
Gets the largest possible value of a
Duration . |
static Duration |
getMinValue()
Gets the smallest possible value of a
Duration . |
double |
getSeconds()
Gets the seconds component of this
Duration . |
TimeStandard |
getStandard()
Gets the time standard in which this
Duration is measured. |
double |
getTotalDays()
Gets the total number of whole and fractional days represented by this
Duration . |
double |
getTotalSeconds()
|
static Duration |
getZero()
Gets a
Duration of 0 days and seconds. |
static boolean |
greaterThan(Duration left,
Duration right)
Returns
true if left is longer than right . |
static boolean |
greaterThanOrEqual(Duration left,
Duration right)
Returns
true if left is longer than or exactly equal to right . |
int |
hashCode()
Returns a hash code for this instance, which is suitable for use in hashing algorithms and data structures like a hash table.
|
static double |
hoursMinutesSecondsToSeconds(int hours,
int minutes,
double seconds)
Converts the specified number of hours, minutes, and seconds to total duration in seconds.
|
static boolean |
lessThan(Duration left,
Duration right)
Returns
true if left is shorter than right . |
static boolean |
lessThanOrEqual(Duration left,
Duration right)
Returns
true if left is shorter than or exactly equal to right . |
Duration |
multiply(double constant)
Multiplies the
Duration by a constant. |
static Duration |
multiply(Duration left,
double right)
Multiplies the
Duration by a constant. |
static Duration |
negate(Duration value)
Inverts a specified
Duration . |
static boolean |
notEquals(Duration left,
Duration right)
Returns
true if two Durations are NOT exactly equal, within the limits
of floating point precision. |
Duration |
subtract(Duration other)
Subtracts the specified
Duration from this instance. |
static Duration |
subtract(Duration left,
Duration right)
|
Duration |
toDuration()
|
String |
toString()
|
public Duration()
public Duration(int days, int hours, int minutes, double seconds)
Duration
from a specified number
of days, hours, minutes, and seconds. The time standard is not
specified, so this Duration
will match the time standard of anything it
is added to or subtracted from.days
- The number of days in the new Duration
.hours
- The number of hours in the new Duration
.minutes
- The number of minutes in the new Duration
.seconds
- The number of seconds in the new Duration
.ArgumentOutOfRangeException
- Thrown if the inputs represent a value too large to be stored in a Duration
.public Duration(int days, int hours, int minutes, double seconds, TimeStandard standard)
Duration
from a specified number
of days, hours, minutes, and seconds. It also specifies that the time is
measured using the specified time standard.days
- The number of days in the new Duration
.hours
- The number of hours in the new Duration
.minutes
- The number of minutes in the new Duration
.seconds
- The number of seconds in the new Duration
.standard
- The time standard in which the time is measured.ArgumentOutOfRangeException
- Thrown if the inputs represent a value too large to be stored in a Duration
.public Duration(int days, double seconds)
Duration
from a specified number
of days and seconds. The time standard is not specified, so this Duration
will match the time standard of anything it is added to or subtracted from.days
- The number of days in the new Duration
.seconds
- The number of seconds in the new Duration
.ArgumentOutOfRangeException
- Thrown if the inputs represent a value too large to be stored in a Duration
.public Duration(int days, double seconds, TimeStandard standard)
Duration
from a specified number
of days and seconds. It also specifies that the time is
measured using the specified time standard.days
- The number of days in the new Duration
.seconds
- The number of seconds in the new Duration
.standard
- The time standard in which the time is measured.ArgumentOutOfRangeException
- Thrown if the inputs represent a value too large to be stored in a Duration
.public Duration(@Nonnull Duration timeSpan)
Duration
from a Duration
.
The time standard is not specified, so this Duration
will match the
time standard of anything it is added to or subtracted from.timeSpan
- The time span.public Duration(@Nonnull Duration timeSpan, TimeStandard standard)
Duration
from a Duration
.
It also specifies that the time is measured using the specified
time standard.timeSpan
- The time span.standard
- The time standard in which the span is measured.public static double hoursMinutesSecondsToSeconds(int hours, int minutes, double seconds)
hours
- The number of hours.minutes
- The number of minutes.seconds
- The number of seconds.@Nonnull public static Duration getMaxValue()
Duration
.
The value is Integer.MAX_VALUE
days and 86399.0 seconds.
@Nonnull public static Duration getMinValue()
Duration
.
The value is Integer.MIN_VALUE
days and -86399.0 seconds.
public final int getDays()
Duration
.public final double getSeconds()
Duration
. This is the number of seconds represented by
this Duration
in addition to the Days
(get
), so it will always be less than
TimeConstants.SecondsPerDay
.public final TimeStandard getStandard()
Duration
is measured.public final double getTotalDays()
Duration
.public final double getTotalSeconds()
public int hashCode()
hashCode
in class Object
Object.equals(java.lang.Object)
,
System.identityHashCode(java.lang.Object)
public final boolean equalsType(@Nonnull Duration other)
true
if this Duration
exactly equals another Duration
, within the limits
of floating point precision. To be considered equal, the Days
(get
)
and Standard
(get
) properties must be identical (or one must be null) and the
difference between the Seconds
(get
) properties must be less than 1.0e-10.
This method returns false
if the two instances have different time standards,
even if the values would be the same when converted to the same time standard.
equalsType
in interface IEquatable<Duration>
other
- The other Duration
.true
if this Duration
exactly equals the other
Duration
, within the limits of floating point precision.public boolean equals(Object obj)
true
if this Duration
exactly equals another Duration
, within the limits
of floating point precision. To be considered equal, the Days
(get
)
and Standard
(get
) properties must be identical (or one must be null) and the
difference between the Seconds
(get
) properties must be less than 1.0e-10.
This method returns false
if the two instances have different time standards,
even if the values would be the same when converted to the same time standard.
public final boolean equalsEpsilon(@Nonnull Duration other, double epsilon)
true
if this Duration
is within epsilon
seconds of the
specified Duration
. That is, in order for the Durations
to be considered equal (and for
this function to return true
), the absolute value of the difference between them, in
seconds, must be less than or equal to epsilon
.equalsEpsilon
in interface IEquatableEpsilon<Duration>
other
- The Duration
to compare to this Duration
.epsilon
- The largest difference between the Durations
, in seconds, such that they will be considered equal.true
if the dates are equal as defined by the epsilon value.public final int compareTo(@Nonnull Duration other)
compareTo
in interface Comparable<Duration>
other
- An object to compare with this instance.Value | Meaning |
---|---|
Less than zero |
This instance is less than other .
|
Zero |
This instance is equal to other .
|
Greater than zero |
This instance is greater than other .
|
ArgumentException
- Thrown when comparing this object to a Duration
defined in a different TimeStandard
.@Nonnull public final Duration add(@Nonnull Duration other)
Duration
to this instance.
The two Durations
must have the same time standard, or one of the time standards must be null.
Attempting to add two Duration
instances with different time standards will result in an ArgumentException
.
other
- The Duration
to add to this instance.Duration
that represents the value of this instance plus the value of other
.ArgumentException
- Thrown if this Duration
and other
have different TimeStandards
.ArgumentOutOfRangeException
- Thrown if the result represents a value that cannot be stored in a Duration
.@Nonnull public final Duration subtract(@Nonnull Duration other)
Duration
from this instance.
The two Durations
must have the same time standard, or one of the time standards must be null.
Attempting to add two Duration
instances with different time standards will result in an ArgumentException
.
other
- The Duration
to subtract from this instance.Duration
that represents the value of this instance minus the value of other
.ArgumentException
- Thrown if this Duration
and other
have different TimeStandards
.ArgumentOutOfRangeException
- Thrown if the result represents a value too large to be stored in a Duration
.@Nonnull public final Duration multiply(double constant)
Duration
by a constant.constant
- The constant by which to multiply the Duration
.Duration
that represents the value of this instance multiplied by the constant.ArgumentOutOfRangeException
- Thrown if the result represents a value too large to be stored in a Duration
.@Nonnull public final Duration divide(double constant)
Duration
by a constant.constant
- The constant by which to divide the Duration
.Duration
that represents the value of this instance divided by the constant.ArgumentOutOfRangeException
- Thrown if the result represents a value too large to be stored in a Duration
.@Nonnull public final Duration addSeconds(double seconds)
seconds
- The number of seconds to add.Duration
which is the sum of the original Duration
and the specified number of seconds.ArgumentOutOfRangeException
- Thrown if the result represents a value too large to be stored in a Duration
.@Nonnull public final Duration addDays(double days)
days
- The number of days to add.Duration
which is the sum of the original Duration
and the specified number of days.ArgumentOutOfRangeException
- Thrown if the result represents a value too large to be stored in a Duration
.public static boolean equals(@Nonnull Duration left, @Nonnull Duration right)
true
if two Durations
are exactly equal, within the limits
of floating point precision. To be considered equal, the Days
(get
)
and Standard
(get
) properties must be identical (or one must be null) and the
difference between the Seconds
(get
) properties must be less than 1.0e-10.
This method returns false
if the two instances have different time standards,
even if the values would be the same when converted to the same time standard.
public static boolean notEquals(@Nonnull Duration left, @Nonnull Duration right)
true
if two Durations
are NOT exactly equal, within the limits
of floating point precision. To be considered equal, the Days
(get
)
and Standard
(get
) properties must be identical (or one must be null) and the
difference between the Seconds
(get
) properties must be less than 1.0e-10.
This method returns false
if the two instances have different time standards,
even if the values would be the same when converted to the same time standard.
public static boolean lessThan(@Nonnull Duration left, @Nonnull Duration right)
true
if left
is shorter than right
.public static boolean greaterThan(@Nonnull Duration left, @Nonnull Duration right)
true
if left
is longer than right
.public static boolean lessThanOrEqual(@Nonnull Duration left, @Nonnull Duration right)
true
if left
is shorter than or exactly equal to right
.public static boolean greaterThanOrEqual(@Nonnull Duration left, @Nonnull Duration right)
true
if left
is longer than or exactly equal to right
.@Nonnull public static Duration add(@Nonnull Duration left, @Nonnull Duration right)
Duration
instances.@Nonnull public static Duration subtract(@Nonnull Duration left, @Nonnull Duration right)
left
- The subtrahend.right
- The minuend.left
minus right
.@Nonnull public static Duration negate(@Nonnull Duration value)
Duration
. For example, if the value
represents a positive
quantity of time, the returned Duration
will be a negative quantity of time.value
- The value to invert.Duration
.@Nonnull public static Duration multiply(@Nonnull Duration left, double right)
Duration
by a constant.public static double divide(@Nonnull Duration dividend, @Nonnull Duration divisor)
Duration
by another duration.@Nonnull public static Duration divide(@Nonnull Duration dividend, double divisor)
Duration
by a constant.@Nonnull public static Duration fromDays(double days)
Duration
that represents the specified number of days.days
- The number of days to be represented by the returned Duration
.Duration
representing the specified number of days.ArgumentOutOfRangeException
- Thrown if the result represents a value too large to be stored in a Duration
.@Nonnull public static Duration fromDays(double days, TimeStandard standard)
Duration
that represents the specified number of days
using the specified time standard.days
- The number of days to be represented by the returned Duration
.standard
- The time standard of the new Duration
.Duration
representing the specified number of days.ArgumentOutOfRangeException
- Thrown if the result represents a value too large to be stored in a Duration
.@Nonnull public static Duration fromSeconds(double seconds)
Duration
that represents the specified number of seconds.seconds
- The number of seconds to be represented by the returned Duration
.Duration
representing the specified number of seconds.ArgumentOutOfRangeException
- Thrown if the result represents a value too large to be stored in a Duration
.@Nonnull public static Duration fromSeconds(double seconds, TimeStandard standard)
Duration
that represents the specified number of seconds using the
specified time standard.seconds
- The number of seconds to be represented by the returned Duration
.standard
- The time standard of the new Duration
.Duration
representing the specified number of seconds.ArgumentOutOfRangeException
- Thrown if the result represents a value too large to be stored in a Duration
.@Nonnull public static Duration fromHours(double hours)
Duration
that represents the specified number of hours.hours
- The number of hours to be represented by the returned Duration
.Duration
representing the specified number of hours.ArgumentOutOfRangeException
- Thrown if the result represents a value too large to be stored in a Duration
.@Nonnull public static Duration fromHours(double hours, TimeStandard standard)
Duration
that represents the specified number of hours using the
specified time standard.hours
- The number of hours to be represented by the returned Duration
.standard
- The time standard of the new Duration
.Duration
representing the specified number of hours.ArgumentOutOfRangeException
- Thrown if the result represents a value too large to be stored in a Duration
.@Nonnull public static Duration fromMinutes(double minutes)
Duration
that represents the specified number of minutes.minutes
- The number of minutes to be represented by the returned Duration
.Duration
representing the specified number of minutes.ArgumentOutOfRangeException
- Thrown if the result represents a value too large to be stored in a Duration
.@Nonnull public static Duration fromMinutes(double minutes, TimeStandard standard)
Duration
that represents the specified number of minutes using the
specified time standard.minutes
- The number of minutes to be represented by the returned Duration
.standard
- The time standard of the new Duration
.Duration
representing the specified number of minutes.ArgumentOutOfRangeException
- Thrown if the result represents a value too large to be stored in a Duration
.