from method

String from(
  1. DateTime date, [
  2. bool withoutPrefixOrSuffix = false
])

Implementation

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

  String timeString = "";

  final locale = usedLocale;

  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;
}