summaryrefslogtreecommitdiff
path: root/lib/date_utils.dart
blob: 941f1378697f922740d69261ca74808f5d60bde5 (plain)
String pluralize(int count, String noun, [String? plural]) {
  if (count == 1) {
    return noun;
  } else {
    return plural ?? '${noun}s';
  }
}

String number(int number) {
  const numbers = [
    'zero',
    'one',
    'two',
    'three',
    'four',
    'five',
    'six',
    'seven',
    'eight',
    'nine',
    'ten'
  ];

  if (number < numbers.length) {
    return numbers[number];
  } else {
    return number.toString();
  }
}

String daysAgo(DateTime dateTime) {
  final now = DateTime.now();
  final duration = now.difference(dateTime);

  ago(int count, String noun, [String? plural]) {
    return "${number(count)} ${pluralize(count, noun, plural)} ago";
  }

  agoRound(double count, String noun, [String? plural]) {
    return ago(count.round(), noun, plural);
  }

  if (duration.inSeconds < 60) {
    return "now";
  } else if (duration.inMinutes < 60) {
    return ago(duration.inMinutes, "minute");
  } else if (duration.inHours < 24) {
    return ago(duration.inHours, "hour");
  } else if (duration.inDays < 7) {
    return ago(duration.inDays, "day");
  } else if (duration.inDays < 30) {
    return agoRound(duration.inDays / 7, "week");
  } else if (duration.inDays < 365) {
    return agoRound(duration.inDays / 30, "month");
  } else {
    return agoRound(duration.inDays / 365, "years");
  }
}