formatTimeDifference function

String formatTimeDifference(
  1. {required String timeStr}
)

Implementation

String formatTimeDifference({required String timeStr}) {
  // Parse the input time string
  DateTime inputTime = DateTime.parse(timeStr).toUtc();

  // Get the current time
  DateTime currentTime = DateTime.now().toUtc();

  // Calculate the time difference
  Duration difference = currentTime.difference(inputTime);

  // Calculate the difference in various time intervals
  int secondsDifference = difference.inSeconds;
  int minutesDifference = difference.inMinutes;
  int hoursDifference = difference.inHours;
  int daysDifference = difference.inDays;
  int weeksDifference = (daysDifference / 7).floor();
  int monthsDifference = (daysDifference / 30).floor();
  int yearsDifference = (daysDifference / 365).floor();

  // Generate the output string based on the time difference
  if (yearsDifference > 0) {
    return "$yearsDifference year${yearsDifference == 1 ? '' : 's'} ago";
  } else if (monthsDifference > 0) {
    return "$monthsDifference month${monthsDifference == 1 ? '' : 's'} ago";
  } else if (weeksDifference > 0) {
    return "$weeksDifference week${weeksDifference == 1 ? '' : 's'} ago";
  } else if (daysDifference > 0) {
    return "$daysDifference day${daysDifference == 1 ? '' : 's'} ago";
  } else if (hoursDifference > 0) {
    return "$hoursDifference hour${hoursDifference == 1 ? '' : 's'} ago";
  } else if (minutesDifference > 0) {
    return "$minutesDifference minute${minutesDifference == 1 ? '' : 's'} ago";
  } else {
    return "$secondsDifference second${secondsDifference == 1 ? '' : 's'} ago";
  }
}