UNPKG

0xtrails

Version:

SDK for Trails

46 lines (41 loc) 1.5 kB
export const formatRelativeDate = (dateString?: string) => { if (!dateString) return { relative: null, full: null } try { const date = new Date(dateString) const now = new Date() const diffMs = now.getTime() - date.getTime() const diffSeconds = Math.floor(diffMs / 1000) const diffMinutes = Math.floor(diffSeconds / 60) const diffHours = Math.floor(diffMinutes / 60) const diffDays = Math.floor(diffHours / 24) const diffWeeks = Math.floor(diffDays / 7) const diffMonths = Math.floor(diffDays / 30) const diffYears = Math.floor(diffDays / 365) let relative: string if (diffSeconds < 60) { relative = "just now" } else if (diffMinutes < 60) { relative = `${diffMinutes}m ago` } else if (diffHours < 24) { relative = `${diffHours}h ago` } else if (diffDays < 7) { relative = diffDays === 1 ? "1 day ago" : `${diffDays} days ago` } else if (diffWeeks < 4) { relative = diffWeeks === 1 ? "1 week ago" : `${diffWeeks} weeks ago` } else if (diffMonths < 12) { relative = diffMonths === 1 ? "1 month ago" : `${diffMonths} months ago` } else { relative = diffYears === 1 ? "1 year ago" : `${diffYears} years ago` } const full = date.toLocaleDateString("en-US", { month: "short", day: "numeric", year: "numeric", hour: "2-digit", minute: "2-digit", }) return { relative, full } } catch { return { relative: null, full: null } } }