formatDate function

String formatDate(
  1. DateTime date, {
  2. String locale = 'en',
})

Implementation

String formatDate(DateTime date, {String locale = 'en'}) {
  initializeDateFormatting(locale);

  final DateTime now = DateTime.now();
  final Duration difference = now.difference(date);
  final DateFormat dateFormat = DateFormat.yMMMMd(locale);
  final String dateString = dateFormat.format(date);

  if (difference.inMinutes < 1) {
    return locale == 'es' ? 'Justo ahora' : 'Just now';
  } else if (difference.inMinutes < 60) {
    return locale == 'es'
			? 'hace ${difference.inMinutes}m'
			: '${difference.inMinutes}m ago';
  } else if (difference.inHours < 24) {
    return locale == 'es'
			? 'hace ${difference.inHours}h'
			: '${difference.inHours}h ago';
  } else if (difference.inDays < 5) {
    return locale == 'es'
			? 'hace ${difference.inDays}d'
			: '${difference.inDays}d ago';
  } else if (difference.inDays > 365) {
    return dateString;
  } else {
    return timeago.format(date, locale: locale);
  }
}