Dart API Referencedart:coreDuration

Duration class

A Duration represents a time span. A duration can be negative.

class Duration implements Comparable {
  static const int MILLISECONDS_PER_SECOND = 1000;
  static const int SECONDS_PER_MINUTE = 60;
  static const int MINUTES_PER_HOUR = 60;
  static const int HOURS_PER_DAY = 24;

  static const int MILLISECONDS_PER_MINUTE =
      MILLISECONDS_PER_SECOND * SECONDS_PER_MINUTE;
  static const int MILLISECONDS_PER_HOUR =
      MILLISECONDS_PER_MINUTE * MINUTES_PER_HOUR;
  static const int MILLISECONDS_PER_DAY =
      MILLISECONDS_PER_HOUR * HOURS_PER_DAY;

  static const int SECONDS_PER_HOUR = SECONDS_PER_MINUTE * MINUTES_PER_HOUR;
  static const int SECONDS_PER_DAY = SECONDS_PER_HOUR * HOURS_PER_DAY;

  static const int MINUTES_PER_DAY = MINUTES_PER_HOUR * HOURS_PER_DAY;

  /**
   * This [Duration] in milliseconds.
   */
  final int inMilliseconds;

  /**
   * The duration is the sum of all individual parts. This means that individual
   * parts don't need to be less than the next-bigger unit. For example [hours]
   * is allowed to have a value greater than 23.
   *
   * All individual parts are allowed to be negative.
   * All arguments are by default 0.
   */
  const Duration({int days: 0,
                  int hours: 0,
                  int minutes: 0,
                  int seconds: 0,
                  int milliseconds: 0})
      : inMilliseconds = days * Duration.MILLISECONDS_PER_DAY +
                         hours * Duration.MILLISECONDS_PER_HOUR +
                         minutes * Duration.MILLISECONDS_PER_MINUTE +
                         seconds * Duration.MILLISECONDS_PER_SECOND +
                         milliseconds;

  /**
   * This [Duration] in days. Incomplete days are discarded
   */
  int get inDays {
    return inMilliseconds ~/ Duration.MILLISECONDS_PER_DAY;
  }

  /**
   * This [Duration] in hours. Incomplete hours are discarded.
   * The returned value can be greater than 23.
   */
  int get inHours {
    return inMilliseconds ~/ Duration.MILLISECONDS_PER_HOUR;
  }

  /**
   * This [Duration] in minutes. Incomplete minutes are discarded.
   * The returned value can be greater than 59.
   */
  int get inMinutes {
    return inMilliseconds ~/ Duration.MILLISECONDS_PER_MINUTE;
  }

  /**
   * This [Duration] in seconds. Incomplete seconds are discarded.
   * The returned value can be greater than 59.
   */
  int get inSeconds {
    return inMilliseconds ~/ Duration.MILLISECONDS_PER_SECOND;
  }

  bool operator ==(other) {
    if (other is !Duration) return false;
    return inMilliseconds == other.inMilliseconds;
  }

  int get hashCode {
    return inMilliseconds.hashCode;
  }

  int compareTo(Duration other) {
    return inMilliseconds.compareTo(other.inMilliseconds);
  }

  String toString() {
    String threeDigits(int n) {
      if (n >= 100) return "$n";
      if (n > 10) return "0$n";
      return "00$n";
    }
    String twoDigits(int n) {
      if (n >= 10) return "$n";
      return "0$n";
    }

    if (inMilliseconds < 0) {
      Duration duration =
          new Duration(milliseconds: -inMilliseconds);
      return "-$duration";
    }
    String twoDigitMinutes =
        twoDigits(inMinutes.remainder(Duration.MINUTES_PER_HOUR));
    String twoDigitSeconds =
        twoDigits(inSeconds.remainder(Duration.SECONDS_PER_MINUTE));
    String threeDigitMs =
        threeDigits(inMilliseconds.remainder(Duration.MILLISECONDS_PER_SECOND));
    return "$inHours:$twoDigitMinutes:$twoDigitSeconds.$threeDigitMs";
  }
}

Implements

Comparable

Static Properties

const int HOURS_PER_DAY #

static const int HOURS_PER_DAY = 24;

const int MILLISECONDS_PER_DAY #

static const int MILLISECONDS_PER_DAY =
    MILLISECONDS_PER_HOUR * HOURS_PER_DAY;

const int MILLISECONDS_PER_HOUR #

static const int MILLISECONDS_PER_HOUR =
    MILLISECONDS_PER_MINUTE * MINUTES_PER_HOUR;

const int MILLISECONDS_PER_MINUTE #

static const int MILLISECONDS_PER_MINUTE =
    MILLISECONDS_PER_SECOND * SECONDS_PER_MINUTE;

const int MILLISECONDS_PER_SECOND #

static const int MILLISECONDS_PER_SECOND = 1000;

const int MINUTES_PER_DAY #

static const int MINUTES_PER_DAY = MINUTES_PER_HOUR * HOURS_PER_DAY;

const int MINUTES_PER_HOUR #

static const int MINUTES_PER_HOUR = 60;

const int SECONDS_PER_DAY #

static const int SECONDS_PER_DAY = SECONDS_PER_HOUR * HOURS_PER_DAY;

const int SECONDS_PER_HOUR #

static const int SECONDS_PER_HOUR = SECONDS_PER_MINUTE * MINUTES_PER_HOUR;

const int SECONDS_PER_MINUTE #

static const int SECONDS_PER_MINUTE = 60;

Constructors

const Duration([int days = 0, int hours = 0, int minutes = 0, int seconds = 0, int milliseconds = 0]) #

The duration is the sum of all individual parts. This means that individual parts don't need to be less than the next-bigger unit. For example hours is allowed to have a value greater than 23.

All individual parts are allowed to be negative. All arguments are by default 0.

const Duration({int days: 0,
                int hours: 0,
                int minutes: 0,
                int seconds: 0,
                int milliseconds: 0})
    : inMilliseconds = days * Duration.MILLISECONDS_PER_DAY +
                       hours * Duration.MILLISECONDS_PER_HOUR +
                       minutes * Duration.MILLISECONDS_PER_MINUTE +
                       seconds * Duration.MILLISECONDS_PER_SECOND +
                       milliseconds;

Properties

final int hashCode #

Get a hash code for this object.

All objects have hash codes. Hash codes are guaranteed to be the same for objects that are equal when compared using the equality operator ==. Other than that there are no guarantees about the hash codes. They will not be consistent between runs and there are no distribution guarantees.

If a subclass overrides hashCode it should override the equality operator as well to maintain consistency.

docs inherited from Object
int get hashCode {
  return inMilliseconds.hashCode;
}

final int inDays #

This Duration in days. Incomplete days are discarded

int get inDays {
  return inMilliseconds ~/ Duration.MILLISECONDS_PER_DAY;
}

final int inHours #

This Duration in hours. Incomplete hours are discarded. The returned value can be greater than 23.

int get inHours {
  return inMilliseconds ~/ Duration.MILLISECONDS_PER_HOUR;
}

final int inMilliseconds #

This Duration in milliseconds.

final int inMilliseconds;

final int inMinutes #

This Duration in minutes. Incomplete minutes are discarded. The returned value can be greater than 59.

int get inMinutes {
  return inMilliseconds ~/ Duration.MILLISECONDS_PER_MINUTE;
}

final int inSeconds #

This Duration in seconds. Incomplete seconds are discarded. The returned value can be greater than 59.

int get inSeconds {
  return inMilliseconds ~/ Duration.MILLISECONDS_PER_SECOND;
}

Operators

bool operator ==(other) #

The equality operator.

The default behavior for all Objects is to return true if and only if this and other are the same object.

If a subclass overrides the equality operator it should override the hashCode method as well to maintain consistency.

docs inherited from Object
bool operator ==(other) {
  if (other is !Duration) return false;
  return inMilliseconds == other.inMilliseconds;
}

Methods

int compareTo(Duration other) #

Compares this object to another Comparable

Returns a value like a Comparator when comparing this to other.

May throw an ArgumentError if other is of a type that is not comparable to this.

docs inherited from Comparable
int compareTo(Duration other) {
  return inMilliseconds.compareTo(other.inMilliseconds);
}

String toString() #

Returns a string representation of this object.

docs inherited from Object
String toString() {
  String threeDigits(int n) {
    if (n >= 100) return "$n";
    if (n > 10) return "0$n";
    return "00$n";
  }
  String twoDigits(int n) {
    if (n >= 10) return "$n";
    return "0$n";
  }

  if (inMilliseconds < 0) {
    Duration duration =
        new Duration(milliseconds: -inMilliseconds);
    return "-$duration";
  }
  String twoDigitMinutes =
      twoDigits(inMinutes.remainder(Duration.MINUTES_PER_HOUR));
  String twoDigitSeconds =
      twoDigits(inSeconds.remainder(Duration.SECONDS_PER_MINUTE));
  String threeDigitMs =
      threeDigits(inMilliseconds.remainder(Duration.MILLISECONDS_PER_SECOND));
  return "$inHours:$twoDigitMinutes:$twoDigitSeconds.$threeDigitMs";
}