31 lines
1.1 KiB
Dart
31 lines
1.1 KiB
Dart
|
|
import 'package:flutter/widgets.dart';
|
||
|
|
|
||
|
|
import '../../l10n/app_localizations.dart';
|
||
|
|
|
||
|
|
String formatRelativeTime(BuildContext context, DateTime dateTime) {
|
||
|
|
final l10n = AppLocalizations.of(context)!;
|
||
|
|
final diff = DateTime.now().difference(dateTime);
|
||
|
|
if (diff.inMinutes < 1) return l10n.timeJustNow;
|
||
|
|
if (diff.inHours < 1) return l10n.timeMinutesAgo(diff.inMinutes);
|
||
|
|
if (diff.inDays < 1) return l10n.timeHoursAgo(diff.inHours);
|
||
|
|
if (diff.inDays < 30) return l10n.timeDaysAgo(diff.inDays);
|
||
|
|
return '${dateTime.month}/${dateTime.day}';
|
||
|
|
}
|
||
|
|
|
||
|
|
String formatCompactLocalDateTime(String isoString) {
|
||
|
|
final dateTime = DateTime.parse(isoString).toLocal();
|
||
|
|
final now = DateTime.now();
|
||
|
|
final timeText =
|
||
|
|
'${dateTime.hour.toString().padLeft(2, '0')}:${dateTime.minute.toString().padLeft(2, '0')}';
|
||
|
|
|
||
|
|
if (now.year == dateTime.year &&
|
||
|
|
now.month == dateTime.month &&
|
||
|
|
now.day == dateTime.day) {
|
||
|
|
return timeText;
|
||
|
|
}
|
||
|
|
|
||
|
|
final dateText =
|
||
|
|
'${dateTime.year}-${dateTime.month.toString().padLeft(2, '0')}-${dateTime.day.toString().padLeft(2, '0')}';
|
||
|
|
return '$dateText $timeText';
|
||
|
|
}
|