toTimeAgo method

String toTimeAgo({
  1. bool numericDates = false,
  2. bool persian = false,
})

Implementation

String toTimeAgo({bool numericDates = false, bool persian = false}) {
  try {
    final Duration difference = DateTime.now().difference(intl.DateFormat("yyyy-MM-ddThh:mm:sss").parse(this));
    if (difference.inDays > 8) {
      return substring(0, 10);
    } else if ((difference.inDays / 7).floor() >= 1) {
      return persian
          ? numericDates
                ? "۱ هفته پیش"
                : "هفته پیش"
          : numericDates
          ? "1 week ago"
          : "Last week";
    } else if (difference.inDays >= 2) {
      return persian ? "${difference.inDays.toString().toPersianNumber()} روز پیش" : "${difference.inDays} days ago";
    } else if (difference.inDays >= 1) {
      return persian
          ? numericDates
                ? "۱ روز پیش"
                : "دیروز"
          : numericDates
          ? "1 day ago"
          : "Yesterday";
    } else if (difference.inHours >= 2) {
      return persian ? "${difference.inHours.toString().toPersianNumber()} ساعت پیش" : "${difference.inHours} hours ago";
    } else if (difference.inHours >= 1) {
      return persian
          ? numericDates
                ? "۱ ساعت پیش"
                : "یک ساعت پیش"
          : numericDates
          ? "1 hour ago"
          : "An hour ago";
    } else if (difference.inMinutes >= 2) {
      return persian ? "${difference.inMinutes.toString().toPersianNumber()} دقیقه پیش" : "${difference.inMinutes} minutes ago";
    } else if (difference.inMinutes >= 1) {
      return persian
          ? numericDates
                ? "۱ دقیقه پیش"
                : "یک دقیقه پیش"
          : numericDates
          ? "1 minute ago"
          : "A minute ago";
    } else if (difference.inSeconds >= 3) {
      return persian ? "${difference.inSeconds.toString().toPersianNumber()} ثانیه پیش" : "${difference.inSeconds} seconds ago";
    } else {
      return persian ? "همین الان" : "Just now";
    }
  } catch (e) {
    return this;
  }
}