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.floor(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}