naturalday function

String naturalday(
  1. DateTime date, {
  2. DateTime? now,
  3. String locale = 'en',
  4. String format = 'yyyy-MM-dd',
})

Natural day labeling: today, tomorrow, yesterday; otherwise formatted date. Supports locales 'en' and 'fr'. Basic formatting tokens: yyyy, MM, dd, MMM, MMMM.

Implementation

String naturalday(DateTime date,
    {DateTime? now, String locale = 'en', String format = 'yyyy-MM-dd'}) {
  final base = now ?? DateTime.now();
  final d0 = DateTime(base.year, base.month, base.day);
  final d1 = DateTime(date.year, date.month, date.day);
  final diffDays = d1.difference(d0).inDays;

  final isFr = locale.toLowerCase().startsWith('fr');
  if (diffDays == 0) return isFr ? "aujourd'hui" : 'today';
  if (diffDays == 1) return isFr ? 'demain' : 'tomorrow';
  if (diffDays == -1) return isFr ? 'hier' : 'yesterday';

  return _formatDate(d1, format, locale);
}