I have created a function that receives a String date and returns a string that shows the time between the given date and the current DateTime in the format: x days ago, x months ago, just now, x years ago, yesterday, etc:
This is the code for that function:
String tiempoDesdeFecha(String dateString, {bool numericDates = true}) {
DateTime date = DateTime.parse(dateString);
final date2 = DateTime.now();
final difference = date2.difference(date);
if ((difference.inDays / 365).floor() >= 2) {
return "hace".tr()+'${(difference.inDays / 365).floor()}'+"yearsago".tr();
} else if ((difference.inDays / 365).floor() >= 1 ) {
return (numericDates) ? '1yearago'.tr() : 'lastyear'.tr()+" "+(numericDates).toString();
} else if ((difference.inDays / 30).floor() >= 2) {
return "hace".tr()+'${(difference.inDays / 365).floor()}'+"monthsago".tr();
} else if ((difference.inDays / 30).floor() >= 1) {
return (numericDates) ? '1monthago'.tr() : 'lastmonth'.tr();
} else if ((difference.inDays / 7).floor() >= 2) {
return "hace".tr()+'${(difference.inDays / 7).floor()}'+ 'weeksago'.tr();
} else if ((difference.inDays / 7).floor() >= 1) {
return (numericDates) ? "1weekago".tr() : 'lastweek'.tr();
} else if (difference.inDays >= 2) {
return "hace".tr()+'${difference.inDays}'+ 'daysago'.tr();
} else if (difference.inDays >= 1) {
return (numericDates) ? '1dayago'.tr() : 'yesterday'.tr();
} else if (difference.inHours >= 2) {
return "hace".tr()+'${difference.inHours}'+ 'hoursago'.tr();
} else if (difference.inHours >= 1) {
return (numericDates) ? '1hourago'.tr() : 'anhourago'.tr();
} else if (difference.inMinutes >= 2) {
return "hace".tr()+'${difference.inMinutes} ' +'minutesago'.tr();
} else if (difference.inMinutes >= 1) {
return (numericDates) ? '1minuteago'.tr() : 'aminuteago'.tr();
} else if (difference.inSeconds >= 3) {
return "hace".tr()+'${difference.inSeconds}'+ 'secondsago'.tr();
} else {
return 'justnow'.tr();
}
}
I have included the code to show the returned string in one of the four Locale I am using.
Everything is working fine, but the condition:
else if ((difference.inDays / 30).floor() >= 2) {
return "hace".tr()+'${(difference.inDays / 365).floor()}'+"monthsago".tr();
which is always returning 0 months ago.
I am calling the function from:
fecha_recibida = DateFormat('yyyy-MM-dd HH:mm',"en").format(date);
fecha_recibida = tiempoDesdeFecha(fecha_recibida);
I am testing that issue with following String date:
"2021-5-5 19:34"
What am I doing wrong?
I believe the error is in the returned string,
difference.inDays / 365 must be difference.inDays / 30.
So the condition should look like..
else if ((difference.inDays / 30).floor() >= 2) {
return "hace".tr()+'${(difference.inDays / 30).floor()}'+"monthsago".tr();
A plus, as #aman mentioned, you could use timeago package
Related
I want to get time difference like -
'2h 28mins ago', 'a few seconds ago', 'a few mins ago','1 min ago', '6h ago','a day ago','a week ago', 'a few months ago'
I get event occured time as DateTime object. I can get current time with DateTime.now() I want to calculate the difference between this 2 times. I'm currently doing this using many lines of if else statements like this...
if (now.year > date.year) {
//months ago
if ((12 - date.month) + now.month > 11) {
return "a year ago";
} else if ((12 - date.month) + now.month > 1) {
return "${(12 - date.month) + now.month} months ago";
} else if ((12 - date.month) + now.month == 1) {
if ((getDateCountForMonth(date.month) - date.day) + now.day > 13) {
return "a few weeks ago";
}
...}}
Is there a better and simple way to do this? I want to output like this - '2h 28mins ago', 'a few seconds ago', 'a few mins ago','1 min ago', '6h ago','a day ago','a week ago', 'a few months ago'
I created a function to calculate the time difference for a project in the past, you can make use of this function. Just call it by passing the DateTime string which you want to compare with the current timing:
String getComparedTime(String dateTime) {
Duration difference = DateTime.now().difference(DateTime.parse(dateTime));
final List prefix = [
"just now",
"second(s) ago",
"minute(s) ago",
"hour(s) ago",
"day(s) ago",
"month(s) ago",
"year(s) ago"
];
if (difference.inDays == 0) {
if (difference.inMinutes == 0) {
if (difference.inSeconds < 20) {
return (prefix[0]);
} else {
return ("${difference.inSeconds} ${prefix[1]}");
}
} else {
if (difference.inMinutes > 59) {
return ("${(difference.inMinutes / 60).floor()} ${prefix[3]}");
} else {
return ("${difference.inMinutes} ${prefix[2]}");
}
}
} else {
if (difference.inDays > 30) {
if (((difference.inDays) / 30).floor() > 12) {
return ("${((difference.inDays / 30) / 12).floor()} ${prefix[6]}");
} else {
return ("${(difference.inDays / 30).floor()} ${prefix[5]}");
}
} else {
return ("${difference.inDays} ${prefix[4]}");
}
}
}
Lets say the selected date is
DateTime date = DateTime(2022, 9, 7, 17, 30);
you can calculate the difference by calling difference on DateTime format like this:
date.difference(DateTime.now());
and you can get this difference in many format like in days, inHours, in inMinutes ,... :
var days = date.difference(DateTime.now()).inDays;
and with this the calculation may get easier.
if (days > 365) {
//years ago
} else if (days < 365 && days > 31) {
// month ago
} else {
...
}
String timeAgo({bigDate, smallDate, bool numericDates = false}) {
final difference = bigDate.difference(smallDate);
if ((difference.inDays / 7).floor() >= 1) {
return (numericDates) ? '1 week ago' : 'Last week';
} else if (difference.inDays >= 2) {
return '${difference.inDays} days ago';
} else if (difference.inDays >= 1) {
return (numericDates) ? '1 day ago' : 'Yesterday';
} else if (difference.inHours >= 2) {
return '${difference.inHours} hours ago';
} else if (difference.inHours >= 1) {
return (numericDates) ? '1 hour ago' : 'An hour ago';
} else if (difference.inMinutes >= 2) {
return '${difference.inMinutes} minutes ago';
} else if (difference.inMinutes >= 1) {
return (numericDates) ? '1 minute ago' : 'A minute ago';
} else if (difference.inSeconds >= 3) {
return '${difference.inSeconds} seconds ago';
} else {
return 'Just now';
}
}
/// and use like
String date = timeAgo(smallDate: DateTime(2022, 12, 14, 10, 00), bigDate: DateTime(2022, 12, 14, 12, 00),);
print('difference between to dates: $date');
I would like to compare last_uploaded_time with current time.
How to check whether the two time is more or less than one minute?
bool compareTime(String starts) {
print(starts);
var start = starts.split(":");
DateTime currentDateTime = DateTime.now();
String currentTime =
DateFormat(DateUtil.TIME_FORMAT).format(currentDateTime);
print(currentTime);
var end = currentTime.split(":");
DateTime initDateTime = DateTime(
currentDateTime.year, currentDateTime.month, currentDateTime.day);
var startDate = (initDateTime.add(Duration(hours: int.parse(start[0]))))
.add(Duration(minutes: int.parse(start[1])));
var endDate = (initDateTime.add(Duration(hours: int.parse(end[0]))))
.add(Duration(minutes: int.parse(end[1])));
if (currentDateTime.isBefore(endDate) &&
currentDateTime.isAfter(startDate)) {
print("CURRENT datetime is between START and END datetime");
return true;
} else {
print("NOT BETWEEN");
return false;
}
}
Output
I/flutter (12908): 01:16
I/flutter (12908): 01:40
I/flutter (12908): NOT BETWEEN
difference
not exactly working with minutes and seconds so you can use some custom algorithm like
import 'package:intl/intl.dart';
class IntelModel { static String timeSinceDate(DateTime date) {
final now = DateTime.now();
final difference = now.toLocal().difference(date.toLocal());
if ((now.day - date.day) >= 8) {
return 'A few weeks ago';
} else if ((now.day - date.day) >= 1) {
return '${(now.day - date.day)} days ago';
} else if (now.day == date.day) {
if (now.hour > date.hour) {
if ((now.hour - date.hour) >= 2) {
if (now.minute == date.minute) {
return '${(now.hour - date.hour)} hours ago';
} else {
var mins = now.minute - date.minute;
if (mins > 1) {
return '${(now.hour - date.hour)} h ${(now.minute - date.minute)} minutes ago';
} else {
return '${(now.hour - date.hour) - 1} h ${60 + mins} minutes ago';
}
}
} else if ((now.hour - date.hour) == 1) {
int timeMin = now.minute + (60 - date.minute);
if (timeMin == 60) {
return '1 hours ago';
} else if (timeMin >= 60) {
return '1 h ${timeMin - 60} mins ago';
} else {
return '$timeMin minutes ago';
}
}
} else if (now.hour == date.hour) {
if (now.minute > date.minute) {
return '${(now.minute - date.minute)} minutes ago';
} else if (date.minute == now.minute) {
return '${(now.second - date.second)} seconds ago';
}
}
} else {
return 'Error in time';
} } }
void main() {
String getDifference(DateTime date){
Duration duration = DateTime.now().difference(date);
String differenceInMinutes = (duration.inMinutes).toString();
return differenceInMinutes;
}
String str = getDifference(DateTime.parse('2021-09-24'));
print (str);
}
i tried above code on dartpad, you can use this to compare tow dateTime variables. As per above example, you can get more options to compare for eg duration.inDays,duration.inHours,duration.inSeconds etc.
I am using the following class to translate texts depending on the device's locale:
import 'package:flutter/cupertino.dart';
import 'package:flutter/services.dart';
import 'package:yaml/yaml.dart';
class MovMapLocalizations {
final String localeName;
MovMapLocalizations(this.localeName);
static const LocalizationsDelegate<MovMapLocalizations> delegate =
_MovMapLocalizationsDelegate();
YamlMap translations;
Future load() async {
String yamlString = await rootBundle.loadString('lang/${localeName}.yml');
translations = loadYaml(yamlString);
}
String t(String key) {
try {
var keys = key.split(".");
dynamic translated = translations;
keys.forEach((k) => translated = translated[k]);
if (translated == null) {
return "Key not found: $key";
}
return translated;
} catch (e) {
return "Key not found: $key";
}
}
}
class _MovMapLocalizationsDelegate
extends LocalizationsDelegate<MovMapLocalizations> {
const _MovMapLocalizationsDelegate();
#override
bool isSupported(Locale locale) {
print("#########################LOCALE ACTUAL:"+locale.languageCode);
return ['es', 'en'].contains(locale.languageCode);
}
#override
Future<MovMapLocalizations> load(Locale locale) async {
var t = MovMapLocalizations(locale.languageCode);
await t.load();
return t;
}
#override
bool shouldReload(covariant LocalizationsDelegate<MovMapLocalizations> old) {
return false;
}
}
I have also two yaml files to declare the translations: en.yaml and es.yaml:
en.yaml
login:
email: Email
password: Password
login: Sign In
signup: Sign Up
or: Or
newHere: New Here?
signup:
email2: Email
password2: Password
login2: Sign In
signup2: Sign Up
or2: Or
alreadyAccount: Already Have an User Account?
muro:
expand: read more
collapse: close
delete: Delete
denunciar: Report
already: Has already been reported
has_denunciado: You have reported this post
time_ago:
yearsago: years ago
es.yaml
login:
email: Correo electrónico
password: Contraseña
login: Entrar
signup: Registrar
or: O
newHere: ¿Nuevo aquí?
signup:
email2: Correo electrónico
password2: Contraseña
login2: Entrar
signup2: Registrar
or2: O
alreadyAccount: ¿Ya tienes cuenta de usuario?
muro:
expand: leer más
collapse: cerrar
delete: Borrar
denunciar: Denunciar
already: Ya ha sido denunciado
has_denunciado: Has denunciado este post
time_ago:
yearsago: años
Then on every class where I need to make use of translations I am including:
MovMapLocalizations localizations =
Localizations.of<MovMapLocalizations>(context, MovMapLocalizations);
And later, to translate a given text I put the related translation as:
Text(localizations.t("muro.denunciar")
But now I need to implement the use of translations inside a separate class called which doesn't have a context to make use of:
MovMapLocalizations localizations =
Localizations.of<MovMapLocalizations>(context, MovMapLocalizations);
This is the class:
class TimeAgo{
String formatearFecha(Timestamp timestamp){
var dateFromTimeStamp =
DateTime.fromMillisecondsSinceEpoch(timestamp.seconds * 1000);
return DateFormat('dd-MM-yyyy HH:mm').format(dateFromTimeStamp);
}
String timeAgoSinceDate(String dateString, {bool numericDates = true}) {
DateTime date = DateTime.parse(dateString);
final date2 = DateTime.now();
final difference = date2.difference(date);
if ((difference.inDays / 365).floor() >= 2) {
return '${(difference.inDays / 365).floor()} years ago';
} else if ((difference.inDays / 365).floor() >= 1) {
return (numericDates) ? '1 year ago' : 'Last year';
} else if ((difference.inDays / 30).floor() >= 2) {
return '${(difference.inDays / 365).floor()} months ago';
} else if ((difference.inDays / 30).floor() >= 1) {
return (numericDates) ? '1 month ago' : 'Last month';
} else if ((difference.inDays / 7).floor() >= 2) {
return '${(difference.inDays / 7).floor()} weeks ago';
} else if ((difference.inDays / 7).floor() >= 1) {
return (numericDates) ? '1 week ago' : 'Last week';
} else if (difference.inDays >= 2) {
return '${difference.inDays} days ago';
} else if (difference.inDays >= 1) {
return (numericDates) ? '1 day ago' : 'Yesterday';
} else if (difference.inHours >= 2) {
return '${difference.inHours} hours ago';
} else if (difference.inHours >= 1) {
return (numericDates) ? '1 hour ago' : 'An hour ago';
} else if (difference.inMinutes >= 2) {
return '${difference.inMinutes} minutes ago';
} else if (difference.inMinutes >= 1) {
return (numericDates) ? '1 minute ago' : 'A minute ago';
} else if (difference.inSeconds >= 3) {
return '${difference.inSeconds} seconds ago';
} else {
return 'Just now';
}
}
}
What should I do to make it possible?
You can pass a top-level GlobalKey to MaterialApp's navigatorKey property.
Then you can get the current route's context by globalKey.currentContext.
https://api.flutter.dev/flutter/material/MaterialApp/navigatorKey.html
How do we convert specific time format ("yyyy-MM-dd-HH-mm-ss") to calculate time ago in Flutter? I have the codes below for my android app, however I am trying out Flutter which uses Dart. Can someone provide a pointer here on how we can achieve this?
Date currentDate = Calendar.getInstance().getTime();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss", locale);
sdf.setTimeZone(TimeZone.getTimeZone("UTC"));
String dd = sdf.format(newsDate);
Date gmt = null;
try {
gmt = sdf.parse(dd);
} catch (ParseException e) {
e.printStackTrace();
}
long duration = currentDate.getTime() - gmt.getTime();
long diffInSeconds = TimeUnit.MILLISECONDS.toSeconds(duration);
long diffInMinutes = TimeUnit.MILLISECONDS.toMinutes(duration);
long diffInHours = TimeUnit.MILLISECONDS.toHours(duration);
long diffInDays = TimeUnit.MILLISECONDS.toDays(duration);
This is how I've implemented it:
String timeAgoSinceDate({bool numericDates = true}) {
DateTime date = this.createdTime.toLocal();
final date2 = DateTime.now().toLocal();
final difference = date2.difference(date);
if (difference.inSeconds < 5) {
return 'Just now';
} else if (difference.inSeconds <= 60) {
return '${difference.inSeconds} seconds ago';
} else if (difference.inMinutes <= 1) {
return (numericDates) ? '1 minute ago' : 'A minute ago';
} else if (difference.inMinutes <= 60) {
return '${difference.inMinutes} minutes ago';
} else if (difference.inHours <= 1) {
return (numericDates) ? '1 hour ago' : 'An hour ago';
} else if (difference.inHours <= 60) {
return '${difference.inHours} hours ago';
} else if (difference.inDays <= 1) {
return (numericDates) ? '1 day ago' : 'Yesterday';
} else if (difference.inDays <= 6) {
return '${difference.inDays} days ago';
} else if ((difference.inDays / 7).ceil() <= 1) {
return (numericDates) ? '1 week ago' : 'Last week';
} else if ((difference.inDays / 7).ceil() <= 4) {
return '${(difference.inDays / 7).ceil()} weeks ago';
} else if ((difference.inDays / 30).ceil() <= 1) {
return (numericDates) ? '1 month ago' : 'Last month';
} else if ((difference.inDays / 30).ceil() <= 30) {
return '${(difference.inDays / 30).ceil()} months ago';
} else if ((difference.inDays / 365).ceil() <= 1) {
return (numericDates) ? '1 year ago' : 'Last year';
}
return '${(difference.inDays / 365).floor()} years ago';
}
then for example, you can embed it inside of an object, and call it like this:
Text(viewmodel.post.timeAgoSinceDate())
The question is how to format a Dart DateTime as a string stating the time elapsed similar to the way you see times displayed on Stack Overflow.
Is there any better method than this
String timeAgo(DateTime d) {
Duration diff = DateTime.now().difference(d);
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 ? "minute" : "minutes"} ago";
return "just now";
}
Thank you and hope it helps others
I used timeago for the exact purpose and found it quite useful. It has multiple format and different languages support as well.
You can also try this package, Jiffy.
You can get relative time from now
// This returns time ago from now
Jiffy().fromNow(); // a few seconds ago
//You can also pass in a DateTime Object or a string or a list
Jiffy(DateTime.now()).fromNow; // a few seconds ago
//or
Jiffy(DateTime(2018, 10, 25)).fromNow(); // a year ago
Jiffy("2020-10-25").fromNow(); // in a year
Manipulating is also simple in Jiffy
var dateTime = Jiffy().add(hours: 3, months: 2);
dateTime.fromNow(); // in 2 months
You can also get relative time from a specified time apart from now
Jiffy([2022, 10, 25]).from([2022, 1, 25]); // in 10 months
I simplify Paresh's answer by using DateTime extension
create a new dart file called date_time_extension.dart and then write code like this
extension DateTimeExtension on DateTime {
String timeAgo({bool numericDates = true}) {
final date2 = DateTime.now();
final difference = date2.difference(this);
if ((difference.inDays / 7).floor() >= 1) {
return (numericDates) ? '1 week ago' : 'Last week';
} else if (difference.inDays >= 2) {
return '${difference.inDays} days ago';
} else if (difference.inDays >= 1) {
return (numericDates) ? '1 day ago' : 'Yesterday';
} else if (difference.inHours >= 2) {
return '${difference.inHours} hours ago';
} else if (difference.inHours >= 1) {
return (numericDates) ? '1 hour ago' : 'An hour ago';
} else if (difference.inMinutes >= 2) {
return '${difference.inMinutes} minutes ago';
} else if (difference.inMinutes >= 1) {
return (numericDates) ? '1 minute ago' : 'A minute ago';
} else if (difference.inSeconds >= 3) {
return '${difference.inSeconds} seconds ago';
} else {
return 'Just now';
}
}
}
and then, use it like this
import 'package:utilities/extensions/date_time_extension.dart'; // <--- import the file you just create
product.createdAt.timeAgo(numericDates: false) // use it on your DateTime property
If you just want to use Datetime library this is the way you can do it.
void main() {
final currentTime = DateTime.now();
print('Current time: $currentTime');
final threeWeeksAgo = currentTime.subtract(const Duration(days: 21));
print('Three weeks ago: $threeWeeksAgo');
}
This is what you get:
Current time: 2022-09-29 11:26:58.350
Three weeks ago: 2022-09-08 11:26:58.350
String timeAgoCustom(DateTime d) { // <-- Custom method Time Show (Display Example ==> 'Today 7:00 PM') // WhatsApp Time Show Status Shimila
Duration diff = DateTime.now().difference(d);
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 "${DateFormat.E().add_jm().format(d)}";
if (diff.inHours > 0)
return "Today ${DateFormat('jm').format(d)}";
if (diff.inMinutes > 0)
return "${diff.inMinutes} ${diff.inMinutes == 1 ? "minute" : "minutes"} ago";
return "just now";
}
Add This Package --> intl: ^0.17.0
Time Show Example (Today 8:29 PM)
You can use this Method which will give you times ago.
String convertToAgo(String dateTime) {
DateTime input =
DateFormat('yyyy-MM-DDTHH:mm:ss.SSSSSSZ').parse(dateTime, true);
Duration diff = DateTime.now().difference(input);
if (diff.inDays >= 1) {
return '${diff.inDays} day${diff.inDays == 1 ? '' : 's'} ago';
} else if (diff.inHours >= 1) {
return '${diff.inHours} hour${diff.inHours == 1 ? '' : 's'} ago';
} else if (diff.inMinutes >= 1) {
return '${diff.inMinutes} minute${diff.inMinutes == 1 ? '' : 's'} ago';
} else if (diff.inSeconds >= 1) {
return '${diff.inSeconds} second${diff.inSeconds == 1 ? '' : 's'} ago';
} else {
return 'just now';
}
}
Hope you got the answer! you just need to past your timestamp value in this method and you get a time ago formatted string.
String getVerboseDateTimeRepresentation(DateTime dateTime) {
DateTime now = DateTime.now().toLocal();
DateTime localDateTime = dateTime.toLocal();
if (localDateTime.difference(now).inDays == 0) {
var differenceInHours = localDateTime.difference(now).inHours.abs();
var differenceInMins = localDateTime.difference(now).inMinutes.abs();
if (differenceInHours > 0) {
return '$differenceInHours hours ago';
} else if (differenceInMins > 2) {
return '$differenceInMins mins ago';
} else {
return 'Just now';
}
}
String roughTimeString = DateFormat('jm').format(dateTime);
if (localDateTime.day == now.day &&
localDateTime.month == now.month &&
localDateTime.year == now.year) {
return roughTimeString;
}
DateTime yesterday = now.subtract(const Duration(days: 1));
if (localDateTime.day == yesterday.day &&
localDateTime.month == now.month &&
localDateTime.year == now.year) {
return 'Yesterday';
}
if (now.difference(localDateTime).inDays < 4) {
String weekday = DateFormat(
'EEEE',
).format(localDateTime);
return '$weekday, $roughTimeString';
}
return '${DateFormat('yMd').format(dateTime)}, $roughTimeString';
}
A variation on #Alex289's answer
extension DateHelpers on DateTime {
String toTimeAgoLabel({bool isIntervalNumericVisible = true}) {
final now = DateTime.now();
final durationSinceNow = now.difference(this);
final inDays = durationSinceNow.inDays;
if (inDays >= 1) {
return (inDays / 7).floor() >= 1
? isIntervalNumericVisible ? '1 week ago' : 'Last week'
: inDays >= 2
? '$inDays days ago'
: isIntervalNumericVisible
? '1 day ago'
: 'Yesterday';
}
final inHours = durationSinceNow.inHours;
if (inHours >= 1) {
return inHours >= 2
? '$inHours hours ago'
: isIntervalNumericVisible
? '1 hour ago'
: 'An hour ago';
}
final inMinutes = durationSinceNow.inMinutes;
if (inMinutes >= 2) {
return inMinutes >= 2
? '$inMinutes minutes ago'
: isIntervalNumericVisible
? '1 minute ago'
: 'A minute ago';
}
final inSeconds = durationSinceNow.inSeconds;
return inSeconds >= 3 ? '$inSeconds seconds ago' : 'Just now';
}
}