# Duration class

A span of time, such as 27 days, 4 hours, 12 minutes, and 3 seconds.

A `Duration` represents a difference from one point in time to another. The duration may be "negative" if the difference is from a later time to an earlier.

Durations are context independent. For example, a duration of 2 days is always 48 hours, even when it is added to a `DateTime` just when the time zone is about to do a daylight-savings switch. (See DateTime.add).

Despite the same name, a `Duration` object does not implement "Durations" as specified by ISO 8601. In particular, a duration object does not keep track of the individually provided members (such as "days" or "hours"), but only uses these arguments to compute the length of the corresponding time interval.

To create a new Duration object, use this class's single constructor giving the appropriate arguments:

    Duration fastestMarathon = new Duration(hours:2, minutes:3, seconds:2);

The Duration is the sum of all individual parts. This means that individual parts can be larger than the next-bigger unit. For example, inMinutes can be greater than 59.

    assert(fastestMarathon.inMinutes == 123);

All individual parts are allowed to be negative.

Use one of the properties, such as inDays, to retrieve the integer value of the Duration in the specified time unit. Note that the returned value is rounded down. For example,

    Duration aLongWeekend = new Duration(hours:88);
    assert(aLongWeekend.inDays == 3);

This class provides a collection of arithmetic and comparison operators, plus a set of constants useful for converting time units.

See DateTime to represent a point in time. See Stopwatch to measure time-spans.

Implemented types
  - Comparable<Duration>

## Constructors

Duration({int days: 0, int hours: 0, int minutes: 0, int seconds: 0, int milliseconds: 0, int microseconds: 0 })
  Creates a new Duration object whose value is the sum of all individual parts. [...]
  const

## Properties

hashCode → int
  The hash code for this object. [...]
  read-only, override
inDays → int
  Returns the number of whole days spanned by this Duration.
  read-only
inHours → int
  Returns the number of whole hours spanned by this Duration. [...]
  read-only
inMicroseconds → int
  Returns number of whole microseconds spanned by this Duration.
  read-only
inMilliseconds → int
  Returns number of whole milliseconds spanned by this Duration. [...]
  read-only
inMinutes → int
  Returns the number of whole minutes spanned by this Duration. [...]
  read-only
inSeconds → int
  Returns the number of whole seconds spanned by this Duration. [...]
  read-only
isNegative → bool
  Returns whether this `Duration` is negative. [...]
  read-only
runtimeType → Type
  A representation of the runtime type of the object.
  read-only, inherited

## Methods

abs() → Duration
  Returns a new `Duration` representing the absolute value of this `Duration`. [...]
compareTo(Duration other) → int
  Compares this Duration to `other`, returning zero if the values are equal. [...]
  override
toString() → String
  Returns a string representation of this `Duration`. [...]
  override
noSuchMethod(Invocation invocation) → dynamic
  Invoked when a non-existent method or property is accessed. [...]
  inherited

## Operators

operator *(num factor) → Duration
  Multiplies this Duration by the given `factor` and returns the result as a new Duration object. [...]
operator +(Duration other) → Duration
  Adds this Duration and `other` and returns the sum as a new Duration object.
operator -(Duration other) → Duration
  Subtracts `other` from this Duration and returns the difference as a new Duration object.
operator <(Duration other) → bool
  Returns `true` if the value of this Duration is less than the value of `other`.
operator <=(Duration other) → bool
  Returns `true` if the value of this Duration is less than or equal to the value of `other`.
operator ==(dynamic other) → bool
  Returns `true` if this Duration has the same value as `other`.
  override
operator >(Duration other) → bool
  Returns `true` if the value of this Duration is greater than the value of `other`.
operator >=(Duration other) → bool
  Returns `true` if the value of this Duration is greater than or equal to the value of `other`.
operator unary-() → Duration
  Returns a new `Duration` representing this `Duration` negated. [...]
operator ~/(int quotient) → Duration
  Divides this Duration by the given `quotient` and returns the truncated result as a new Duration object. [...]

## Constants

hoursPerDay → const int
  `24`
microsecondsPerDay → const int
  `microsecondsPerHour * hoursPerDay`
microsecondsPerHour → const int
  `microsecondsPerMinute * minutesPerHour`
microsecondsPerMillisecond → const int
  `1000`
microsecondsPerMinute → const int
  `microsecondsPerSecond * secondsPerMinute`
microsecondsPerSecond → const int
  `microsecondsPerMillisecond * millisecondsPerSecond`
millisecondsPerDay → const int
  `millisecondsPerHour * hoursPerDay`
millisecondsPerHour → const int
  `millisecondsPerMinute * minutesPerHour`
millisecondsPerMinute → const int
  `millisecondsPerSecond * secondsPerMinute`
millisecondsPerSecond → const int
  `1000`
minutesPerDay → const int
  `minutesPerHour * hoursPerDay`
minutesPerHour → const int
  `60`
secondsPerDay → const int
  `secondsPerHour * hoursPerDay`
secondsPerHour → const int
  `secondsPerMinute * minutesPerHour`
secondsPerMinute → const int
  `60`
zero → const Duration
  `const Duration(seconds: 0)`