timeAgoString method

String timeAgoString(
  1. int timestamp
)

Implementation

String timeAgoString(
  int timestamp,
) {
  DateTime date = DateTime.fromMillisecondsSinceEpoch(timestamp);

  final date2 = DateTime.now();
  final difference = date2.difference(date);
  final years = (difference.inDays / 365).floor();
  if (difference.inDays > 364) {
    return "${years == 1 ? "Last" : years} ${years == 1 ? "year" : "years ago"}";
  } else if (difference.inDays > 28 && difference.inDays <= 366) {
    double averageDaysInMonth =
        (daysInMonth_leapYear.fold<int>(0, (a, b) => a + b)) / 12;
    int totalMonths = (difference.inDays / averageDaysInMonth).round();
    return "${totalMonths == 1 ? "Last" : totalMonths} ${totalMonths == 1 ? "month" : "months ago"}";
  } else if ((difference.inDays / 7).floor() >= 1) {
    return 'Last week';
  } else if (difference.inDays >= 2) {
    return '${difference.inDays} days ago';
  } else if (difference.inDays >= 1) {
    return 'Yesterday';
  } else if (difference.inHours > 1) {
    return '${difference.inHours} hours ago';
  } else if (difference.inHours == 1) {
    return 'A hour ago';
  } else if (difference.inMinutes >= 13 && difference.inMinutes <= 17) {
    return 'Quarter hour ago';
  } else if (difference.inMinutes <= 32 && difference.inMinutes >= 28) {
    return 'Half hour ago';
  } else if (difference.inMinutes >= 2) {
    return '${difference.inMinutes} minutes ago';
  } else if (difference.inMinutes >= 1) {
    return 'A minute ago';
  } else if (difference.inSeconds > 4) {
    return '${difference.inSeconds} seconds ago';
  } else {
    return 'Just now';
  }
}