main
dart 66 lines 1.92 KB
Raw
1 class AppDateUtils {
2 AppDateUtils._();
3
4 static String formatTimestamp(DateTime dateTime) {
5 final now = DateTime.now();
6 final diff = now.difference(dateTime);
7
8 if (diff.inMinutes < 1) return 'Just now';
9 if (diff.inMinutes < 60) return '${diff.inMinutes}m ago';
10 if (diff.inHours < 24) return '${diff.inHours}h ago';
11 if (diff.inDays == 1) return 'Yesterday';
12 if (diff.inDays < 7) return '${diff.inDays}d ago';
13 if (diff.inDays < 30) return '${(diff.inDays / 7).ceil()}w ago';
14 return '${dateTime.month}/${dateTime.day}/${dateTime.year}';
15 }
16
17 static String formatDate(DateTime dateTime) {
18 return '${_monthName(dateTime.month)} ${dateTime.day}, ${dateTime.year}';
19 }
20
21 static String formatTime(DateTime dateTime) {
22 final h = dateTime.hour % 12 == 0 ? 12 : dateTime.hour % 12;
23 final m = dateTime.minute.toString().padLeft(2, '0');
24 final ampm = dateTime.hour < 12 ? 'AM' : 'PM';
25 return '$h:$m $ampm';
26 }
27
28 static String formatDuration(Duration duration) {
29 if (duration.inSeconds < 60) return '${duration.inSeconds}s';
30 if (duration.inMinutes < 60) {
31 return '${duration.inMinutes}m ${duration.inSeconds % 60}s';
32 }
33 return '${duration.inHours}h ${duration.inMinutes % 60}m';
34 }
35
36 static String sectionLabel(DateTime dateTime) {
37 final now = DateTime.now();
38 final today = DateTime(now.year, now.month, now.day);
39 final date = DateTime(dateTime.year, dateTime.month, dateTime.day);
40 final diff = today.difference(date).inDays;
41
42 if (diff == 0) return 'TODAY';
43 if (diff == 1) return 'YESTERDAY';
44 if (diff < 7) return 'PREVIOUS 7 DAYS';
45 if (diff < 30) return 'PREVIOUS 30 DAYS';
46 return 'OLDER';
47 }
48
49 static String _monthName(int month) {
50 const months = [
51 'Jan',
52 'Feb',
53 'Mar',
54 'Apr',
55 'May',
56 'Jun',
57 'Jul',
58 'Aug',
59 'Sep',
60 'Oct',
61 'Nov',
62 'Dec',
63 ];
64 return months[month - 1];
65 }
66 }