convertToDateRelative static method
String
convertToDateRelative(
- BuildContext context,
- DateTime dateTime, {
- Duration? formatAfter,
- Duration? timeShowNow = const Duration(seconds: 10),
Return a string representing format: Now, few Seconds Ago, 1 minutes ago, 2 hours ago, 3 days ago,...
Implementation
static String convertToDateRelative(
BuildContext context,
DateTime dateTime, {
Duration? formatAfter,
Duration? timeShowNow = const Duration(seconds: 10),
}) {
final DateTime now = DateTime.now();
final BlocArchitectureLocalizations? l10n = context.blocArchitecturel10n;
// After now
if (dateTime.isAfter(now)) {
return convertToDateTime(dateTime);
}
// Before formatAfter
final Duration difference = dateTime.difference(now).abs();
if (formatAfter != null && difference >= formatAfter) {
return convertToDateTime(dateTime);
}
// Less timeShowNow
if (timeShowNow != null && difference < timeShowNow) {
return l10n?.now ?? "now";
}
// Defaut
if (difference < const Duration(minutes: 1)) {
return l10n?.fewSecondsAgo ?? "few seconds ago";
} else if (difference < const Duration(hours: 1)) {
return l10n?.minutesRelative(difference.inMinutes) ?? "${difference.inMinutes} minutes ago";
} else if (difference < const Duration(days: 1)) {
return l10n?.hoursRelative(difference.inHours) ?? "${difference.inHours} hours ago";
} else if (difference < const Duration(days: 30)) {
return l10n?.daysRelative(difference.inDays) ?? "${difference.inDays} days ago";
} else if (difference < const Duration(days: 90)) {
return convertToDate(dateTime);
} else {
return convertToDateTime(dateTime);
}
}