diff options
| author | Mica White <botahamec@outlook.com> | 2026-02-08 10:10:24 -0500 |
|---|---|---|
| committer | Mica White <botahamec@outlook.com> | 2026-02-08 10:10:24 -0500 |
| commit | 1716cf45d0e4e41c7833105dab10542f5ed5dcf1 (patch) | |
| tree | 99ae387cfb3b96c30bbe3fd4cd619dc291505f68 /lib/date_utils.dart | |
Diffstat (limited to 'lib/date_utils.dart')
| -rw-r--r-- | lib/date_utils.dart | 58 |
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");
+ }
+}
|
