From 5b07e3c99d97db6ac20f05fe194f0c2f3e7abe36 Mon Sep 17 00:00:00 2001 From: Yugveer Singh Date: Sun, 29 Dec 2024 12:51:21 +0530 Subject: [PATCH] feat(js-date-utils): add relative time formatter function --- public/data/javascript.json | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/public/data/javascript.json b/public/data/javascript.json index a7f56fbc..1bb5841a 100644 --- a/public/data/javascript.json +++ b/public/data/javascript.json @@ -114,6 +114,41 @@ ], "tags": ["javascript", "date", "time-difference", "utility"], "author": "technoph1le" + }, + { + "title": "Relative Time Formatter", + "description": "Displays how long ago a date occurred or how far in the future a date is.", + "code": [ + "const getRelativeTime = (date) => {", + " const now = Date.now();", + " const diff = date.getTime() - now;", + " const seconds = Math.abs(Math.floor(diff / 1000));", + " const minutes = Math.abs(Math.floor(seconds / 60));", + " const hours = Math.abs(Math.floor(minutes / 60));", + " const days = Math.abs(Math.floor(hours / 24));", + " const years = Math.abs(Math.floor(days / 365));", + "", + " if (Math.abs(diff) < 1000) return 'just now';", + "", + " const isFuture = diff > 0;", + "", + " if (years > 0) return `${isFuture ? 'in ' : ''}${years} ${years === 1 ? 'year' : 'years'}${isFuture ? '' : ' ago'}`;", + " if (days > 0) return `${isFuture ? 'in ' : ''}${days} ${days === 1 ? 'day' : 'days'}${isFuture ? '' : ' ago'}`;", + " if (hours > 0) return `${isFuture ? 'in ' : ''}${hours} ${hours === 1 ? 'hour' : 'hours'}${isFuture ? '' : ' ago'}`;", + " if (minutes > 0) return `${isFuture ? 'in ' : ''}${minutes} ${minutes === 1 ? 'minute' : 'minutes'}${isFuture ? '' : ' ago'}`;", + "", + " return `${isFuture ? 'in ' : ''}${seconds} ${seconds === 1 ? 'second' : 'seconds'}${isFuture ? '' : ' ago'}`;", + "}", + "", + "// usage", + "const pastDate = new Date('2021-12-29 13:00:00');", + "const futureDate = new Date('2026-12-29 13:00:00');", + "console.log(timeAgoOrAhead(pastDate)); // x years ago", + "console.log(timeAgoOrAhead(new Date())); // just now", + "console.log(timeAgoOrAhead(futureDate)); // in x years" + ], + "tags": ["javascript", "date", "time", "relative", "future", "past", "utility"], + "author": "Yugveer06" } ] },