Time constructor

Time({
  1. num days = 0,
  2. num hours = 0,
  3. num minutes = 0,
  4. num seconds = 0,
  5. num milliseconds = 0,
  6. num microseconds = 0,
  7. num nanoseconds = 0,
})

Implementation

factory Time({num days = 0, num hours = 0, num minutes = 0, num seconds = 0,
  num milliseconds = 0, num microseconds = 0, num nanoseconds = 0}) {
  var _hours = days * TimeConstants.hoursPerDay;
  var _minutes = (_hours + hours) * TimeConstants.minutesPerHour;
  var _seconds = (_minutes + minutes) * TimeConstants.secondsPerMinute;
  var _milliseconds = (_seconds + seconds) * TimeConstants.millisecondsPerSecond + milliseconds;

  var _microseconds = (_milliseconds - _milliseconds.toInt()) * TimeConstants.microsecondsPerMillisecond;

  // note: this is here to deal with extreme values
  if (microseconds.abs() > Platform.maxMicrosecondsToNanoseconds) {
    var millisecondsToAdd = microseconds ~/ TimeConstants.microsecondsPerMillisecond;
    _milliseconds += millisecondsToAdd;
    microseconds -= millisecondsToAdd * TimeConstants.microsecondsPerMillisecond;
  }

  var _nanoseconds = (_microseconds + microseconds) * TimeConstants.nanosecondsPerMicrosecond + nanoseconds;

  return Time._untrusted(_milliseconds.toInt(), _nanoseconds.toInt());
}