summaryrefslogtreecommitdiff
path: root/lib/date_utils.dart
diff options
context:
space:
mode:
authorMica White <botahamec@outlook.com>2026-02-08 10:10:24 -0500
committerMica White <botahamec@outlook.com>2026-02-08 10:10:24 -0500
commit1716cf45d0e4e41c7833105dab10542f5ed5dcf1 (patch)
tree99ae387cfb3b96c30bbe3fd4cd619dc291505f68 /lib/date_utils.dart
Initial commitHEADmain
Diffstat (limited to 'lib/date_utils.dart')
-rw-r--r--lib/date_utils.dart58
1 files changed, 58 insertions, 0 deletions
diff --git a/lib/date_utils.dart b/lib/date_utils.dart
new file mode 100644
index 0000000..941f137
--- /dev/null
+++ b/lib/date_utils.dart
@@ -0,0 +1,58 @@
+String pluralize(int count, String noun, [String? plural]) {
+ if (count == 1) {
+ return noun;
+ } else {
+ return plural ?? '${noun}s';
+ }
+}
+
+String number(int number) {
+ const numbers = [
+ 'zero',
+ 'one',
+ 'two',
+ 'three',
+ 'four',
+ 'five',
+ 'six',
+ 'seven',
+ 'eight',
+ 'nine',
+ 'ten'
+ ];
+
+ if (number < numbers.length) {
+ return numbers[number];
+ } else {
+ return number.toString();
+ }
+}
+
+String daysAgo(DateTime dateTime) {
+ final now = DateTime.now();
+ final duration = now.difference(dateTime);
+
+ ago(int count, String noun, [String? plural]) {
+ return "${number(count)} ${pluralize(count, noun, plural)} ago";
+ }
+
+ agoRound(double count, String noun, [String? plural]) {
+ return ago(count.round(), noun, plural);
+ }
+
+ if (duration.inSeconds < 60) {
+ return "now";
+ } else if (duration.inMinutes < 60) {
+ return ago(duration.inMinutes, "minute");
+ } else if (duration.inHours < 24) {
+ return ago(duration.inHours, "hour");
+ } else if (duration.inDays < 7) {
+ return ago(duration.inDays, "day");
+ } else if (duration.inDays < 30) {
+ return agoRound(duration.inDays / 7, "week");
+ } else if (duration.inDays < 365) {
+ return agoRound(duration.inDays / 30, "month");
+ } else {
+ return agoRound(duration.inDays / 365, "years");
+ }
+}