31 lines
881 B
TypeScript
31 lines
881 B
TypeScript
export function formatRelativeTime(dateStr: string): string {
|
|
const date = new Date(dateStr)
|
|
const now = new Date()
|
|
const diffMs = now.getTime() - date.getTime()
|
|
const diffMin = Math.floor(diffMs / 60000)
|
|
const diffHr = Math.floor(diffMin / 60)
|
|
const diffDay = Math.floor(diffHr / 24)
|
|
|
|
if (diffMin < 1) return 'Just now'
|
|
if (diffMin < 60) return `${diffMin}m ago`
|
|
if (diffHr < 24) return `${diffHr}h ago`
|
|
if (diffDay < 7) return `${diffDay}d ago`
|
|
|
|
return date.toLocaleDateString('en-US', {
|
|
month: 'short',
|
|
day: 'numeric',
|
|
year: date.getFullYear() !== now.getFullYear() ? 'numeric' : undefined,
|
|
})
|
|
}
|
|
|
|
export function formatFullDate(dateStr: string): string {
|
|
return new Date(dateStr).toLocaleString('en-US', {
|
|
weekday: 'short',
|
|
month: 'short',
|
|
day: 'numeric',
|
|
year: 'numeric',
|
|
hour: 'numeric',
|
|
minute: '2-digit',
|
|
})
|
|
}
|