timeAgo static method
Calculates the time difference between now and a given DateTime d
and returns a human-readable string like "just now", "5 mins ago", "1 day ago", etc.
Implementation
static String timeAgo(DateTime d) {
Duration diff = DateTime.now().difference(d);
customPrint('the diff is ${diff.inMilliseconds}');
if (diff.inDays > 365) {
return "${(diff.inDays / 365).floor()} ${(diff.inDays / 365).floor() == 1 ? "year" : "years"} ago";
}
if (diff.inDays > 30) {
return "${(diff.inDays / 30).floor()} ${(diff.inDays / 30).floor() == 1 ? "month" : "months"} ago";
}
if (diff.inDays > 7) {
return "${(diff.inDays / 7).floor()} ${(diff.inDays / 7).floor() == 1 ? "week" : "weeks"} ago";
}
if (diff.inDays > 0) {
return "${diff.inDays} ${diff.inDays == 1 ? "day" : "days"} ago";
}
if (diff.inHours > 0) {
return "${diff.inHours} ${diff.inHours == 1 ? "hour" : "hours"} ago";
}
if (diff.inMinutes > 0) {
return "${diff.inMinutes} ${diff.inMinutes == 1 ? "min" : "mins"} ago";
}
if (diff.inSeconds > 3) {
return "${diff.inSeconds} ${diff.inSeconds == 1 ? "sec" : "secs"} ago";
}
if (diff.inSeconds < 0) {
return 'Uploading soon';
}
return "just now";
}