from method

String from (Tempus Tempus, [ bool withoutPrefixOrSuffix = false ])

Returns a String with the different between this and Tempus. Takes an optional bool argument to decide whether to use an identifier. withoutPrefixOrSuffix defaults to false.

var berlinWallFell = Tempus.parse('19891109');
var dDay = new Tempus.parse('19440606');
String difference = berlinWallFell.from(dDay);
assert(difference == '46 years ago');

var berlinWallFell = Tempus.parse('19891109');
var dDay = new Tempus.parse('19440606');
String difference = berlinWallFell.from(dDay, false);
assert(difference == '46 years');

Implementation

String from(Tempus Tempus, [bool withoutPrefixOrSuffix = false]) {
  Duration diff = Tempus._date.difference(_date);

  String timeString = '';

  var locale = _getLocale();

  if (diff.inSeconds.abs() < 45)
    timeString = locale.seconds.replaceFirst('%i', '${diff.inSeconds.abs()}');
  else if (diff.inMinutes.abs() < 2)
    timeString = locale.aMinute.replaceFirst('%i', '${diff.inMinutes.abs()}');
  else if (diff.inMinutes.abs() < 45)
    timeString = locale.minutes.replaceFirst('%i', '${diff.inMinutes.abs()}');
  else if (diff.inHours.abs() < 2)
    timeString = locale.anHour.replaceFirst('%i', '${diff.inHours.abs()}');
  else if (diff.inHours.abs() < 22)
    timeString = locale.hours.replaceFirst('%i', '${diff.inHours.abs()}');
  else if (diff.inDays.abs() < 2)
    timeString = locale.aDay.replaceFirst('%i', '${diff.inDays.abs()}');
  else if (diff.inDays.abs() < 26)
    timeString = locale.days.replaceFirst('%i', '${diff.inDays.abs()}');
  else if (diff.inDays.abs() < 60)
    timeString = locale.aMonth.replaceFirst('%i', '${diff.inDays.abs() ~/ 30}');
  else if (diff.inDays.abs() < 320)
    timeString = locale.months.replaceFirst('%i', '${diff.inDays.abs() ~/ 30}');
  else if (diff.inDays.abs() < 547)
    timeString = locale.aYear.replaceFirst('%i', '${diff.inDays.abs() ~/ 356}');
  else
    timeString = locale.years.replaceFirst('%i', '${diff.inDays.abs() ~/ 356}');

  if (!withoutPrefixOrSuffix) {
    if (diff.isNegative)
      timeString = _addIdentifier(timeString, locale.pastPosition, locale.pastIdentifier);
    else
      timeString = _addIdentifier(timeString, locale.futurePosition, locale.futureIdentifier);
  }

  return timeString;
}