mirror of https://git.lenooby09.tech/LeNooby09/social-app.git
1const NOW = 5 2const MINUTE = 60 3const HOUR = MINUTE * 60 4const DAY = HOUR * 24 5const MONTH = DAY * 28 6const YEAR = DAY * 365 7export function ago(date: number | string | Date): string { 8 let ts: number 9 if (typeof date === 'string') { 10 ts = Number(new Date(date)) 11 } else if (date instanceof Date) { 12 ts = Number(date) 13 } else { 14 ts = date 15 } 16 const diffSeconds = Math.floor((Date.now() - ts) / 1e3) 17 if (diffSeconds < NOW) { 18 return `now` 19 } else if (diffSeconds < MINUTE) { 20 return `${diffSeconds}s` 21 } else if (diffSeconds < HOUR) { 22 return `${Math.floor(diffSeconds / MINUTE)}m` 23 } else if (diffSeconds < DAY) { 24 return `${Math.floor(diffSeconds / HOUR)}h` 25 } else if (diffSeconds < MONTH) { 26 return `${Math.round(diffSeconds / DAY)}d` 27 } else if (diffSeconds < YEAR) { 28 return `${Math.floor(diffSeconds / MONTH)}mo` 29 } else { 30 return new Date(ts).toLocaleDateString() 31 } 32} 33 34export function niceDate(date: number | string | Date) { 35 const d = new Date(date) 36 return `${d.toLocaleDateString('en-us', { 37 year: 'numeric', 38 month: 'short', 39 day: 'numeric', 40 })} at ${d.toLocaleTimeString(undefined, { 41 hour: 'numeric', 42 minute: '2-digit', 43 })}` 44} 45 46export function getAge(birthDate: Date): number { 47 var today = new Date() 48 var age = today.getFullYear() - birthDate.getFullYear() 49 var m = today.getMonth() - birthDate.getMonth() 50 if (m < 0 || (m === 0 && today.getDate() < birthDate.getDate())) { 51 age-- 52 } 53 return age 54}