2026-02-11 14:07:27 -05:00
|
|
|
import 'package:intl/intl.dart';
|
|
|
|
|
|
|
|
|
|
class FriendlyDateFormatter {
|
|
|
|
|
FriendlyDateFormatter();
|
|
|
|
|
|
|
|
|
|
String format(DateTime dateTime) {
|
|
|
|
|
DateTime now = DateTime.now();
|
|
|
|
|
Duration timeSince = now.difference(dateTime);
|
|
|
|
|
DateTime today = DateTime(now.year, now.month, now.day);
|
|
|
|
|
DateTime yesterday = DateTime(now.year, now.month, now.day - 1);
|
|
|
|
|
DateTime dateTimeWithoutTime = DateTime(
|
|
|
|
|
dateTime.year,
|
|
|
|
|
dateTime.month,
|
|
|
|
|
dateTime.day,
|
|
|
|
|
);
|
|
|
|
|
|
2026-05-27 14:08:30 -04:00
|
|
|
if (timeSince.inMinutes <= 2) return 'Just now';
|
2026-02-11 14:07:27 -05:00
|
|
|
if (timeSince.inMinutes < 60) return '${timeSince.inMinutes} minutes ago';
|
2026-05-27 13:57:03 -04:00
|
|
|
if (dateTimeWithoutTime == today) {
|
2026-02-11 14:07:27 -05:00
|
|
|
return 'Today at ${DateFormat.Hm().format(dateTime)}';
|
2026-05-27 13:57:03 -04:00
|
|
|
}
|
|
|
|
|
if (dateTimeWithoutTime == yesterday) {
|
2026-02-11 14:07:27 -05:00
|
|
|
return 'Yesterday at ${DateFormat.Hm().format(dateTime)}';
|
2026-05-27 13:57:03 -04:00
|
|
|
}
|
2026-02-11 14:07:27 -05:00
|
|
|
|
|
|
|
|
return DateFormat.yMMMMd().add_Hm().format(dateTime);
|
|
|
|
|
}
|
|
|
|
|
}
|