diff method

num diff(
  1. dynamic input,
  2. [Units units = Units.MILLISECOND,
  3. bool asFloat = false]
)

Implementation

num diff(var input, [Units units = Units.MILLISECOND, bool asFloat = false]) {
  var dateTime = _parse(input);
  num diff;

  var dt1 = _dateTime.millisecondsSinceEpoch;
  var dt2 = dateTime.millisecondsSinceEpoch;

  switch (units) {
    case Units.MILLISECOND:
      diff = dt1 - dt2;
      break;
    case Units.SECOND:
      diff = (dt1 - dt2) / Duration.millisecondsPerSecond;
      break;
    case Units.MINUTE:
      diff = (dt1 - dt2) / Duration.millisecondsPerMinute;
      break;
    case Units.HOUR:
      diff = (dt1 - dt2) / Duration.millisecondsPerHour;
      break;
    case Units.DAY:
      diff = (dt1 - dt2) / Duration.millisecondsPerDay;
      break;
    case Units.WEEK:
      diff = ((dt1 - dt2) / Duration.millisecondsPerDay) / 7;
      break;
    case Units.MONTH:
      diff = _monthDiff(_dateTime, dateTime);
      break;
    case Units.YEAR:
      diff = _monthDiff(_dateTime, dateTime) / 12;
      break;
  }
  if (!asFloat) return _absFloor(diff);
  return diff;
}