-
Notifications
You must be signed in to change notification settings - Fork 178
Expand file tree
/
Copy pathdatetime_differences.dart
More file actions
60 lines (52 loc) · 2.09 KB
/
datetime_differences.dart
File metadata and controls
60 lines (52 loc) · 2.09 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
import 'package:intl/intl.dart';
import 'package:taskwarrior/app/utils/app_settings/app_settings.dart';
String age(DateTime dt, {bool? use24HourFormat}) {
final format = AppSettings.use24HourFormatRx.value;
String result;
var days = DateTime.now().difference(dt).abs().inDays;
if (days > 365) {
result =
'${(days / 365).toStringAsFixed(1).replaceFirst(RegExp(r'\.0$'), '')}y';
} else if (days > 30) {
result = '${days ~/ 30}mo';
} else if (days > 7) {
result = '${days ~/ 7}w';
} else if (days > 0) {
result = '${days}d';
} else if (DateTime.now().difference(dt).abs().inHours > 0) {
result = '${DateTime.now().difference(dt).abs().inHours}h';
} else if (DateTime.now().difference(dt).abs().inMinutes > 0) {
result = '${DateTime.now().difference(dt).abs().inMinutes}min';
} else {
result = '${DateTime.now().difference(dt).abs().inSeconds}s';
}
// Format the time part according to the format preference
String timeFormat = format ? 'HH:mm' : 'hh:mm a';
String formattedTime = DateFormat(timeFormat).format(dt);
return '$result ago ($formattedTime)';
}
String when(DateTime dt, {bool? use24HourFormat}) {
final format = AppSettings.use24HourFormatRx.value;
String result;
var days = dt.difference(DateTime.now()).abs().inDays;
if (days > 365) {
result =
'${(days / 365).toStringAsFixed(1).replaceFirst(RegExp(r'\.0$'), '')}y';
} else if (days > 30) {
result = '${days ~/ 30}mo';
} else if (days > 7) {
result = '${days ~/ 7}w';
} else if (days > 0) {
result = '${days}d';
} else if (dt.difference(DateTime.now()).abs().inHours > 0) {
result = '${dt.difference(DateTime.now()).abs().inHours}h';
} else if (dt.difference(DateTime.now()).abs().inMinutes > 0) {
result = '${dt.difference(DateTime.now()).abs().inMinutes}min';
} else {
result = '${dt.difference(DateTime.now()).abs().inSeconds}s';
}
// Format the time part according to the format preference
String timeFormat = format ? 'HH:mm' : 'hh:mm a';
String formattedTime = DateFormat(timeFormat).format(dt);
return '$result ($formattedTime)';
}