import { Pipe, PipeTransform } from '@angular/core'; @Pipe({ name: 'relativeTime', standalone: true, pure: false }) export class RelativeTimePipe implements PipeTransform { transform(value: string): string { if (!value) { return ''; } const now = new Date(); const past = new Date(value); const elapsed = now.getTime() - past.getTime(); const msPerSecond = 1000; const msPerMinute = msPerSecond * 60; const msPerHour = msPerMinute * 60; const msPerDay = msPerHour * 24; const msPerWeek = msPerDay * 7; const msPerMonth = msPerDay * 30; const msPerYear = msPerDay * 365; if (elapsed < msPerSecond) { return 'just now'; } else if (elapsed < msPerMinute) { return `${Math.round(elapsed / msPerSecond)} seconds ago`; } else if (elapsed < msPerHour) { return `${Math.round(elapsed / msPerMinute)} minutes ago`; } else if (elapsed < msPerDay) { return `${Math.round(elapsed / msPerHour)} hours ago`; } else if (elapsed < msPerWeek) { return `${Math.round(elapsed / msPerDay)} days ago`; } else if (elapsed < msPerMonth) { return `${Math.round(elapsed / msPerWeek)} weeks ago`; } else if (elapsed < msPerYear) { return `${Math.round(elapsed / msPerMonth)} months ago`; } else { return `${Math.round(elapsed / msPerYear)} years ago`; } } }