-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathutils.ts
47 lines (40 loc) · 1.19 KB
/
utils.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
import {
add,
differenceInDays,
differenceInHours,
differenceInMinutes,
differenceInSeconds,
differenceInYears,
startOfHour,
startOfMinute,
startOfTomorrow,
startOfYear
} from "date-fns"
export const AVERAGE_LIFE_EXPETANCY = 72
export type TimeLeft = {
secondsLeft: number
minutesLeft: number
hoursLeft: number
daysLeft: number
yearsLeft: number
}
const getExpiryDate = (birthdate) => {
return add(new Date(birthdate), { years: AVERAGE_LIFE_EXPETANCY })
}
export const getDistanceUntilExpiry = (birthdate): TimeLeft => {
if (!birthdate) {
return
}
const now = new Date()
const tomorrow = startOfTomorrow()
const nextYear = startOfYear(add(now, { years: 1 }))
const nextHour = startOfHour(add(now, { hours: 1 }))
const nextMinute = startOfMinute(add(now, { minutes: 1 }))
const expiryDate = getExpiryDate(birthdate)
const secondsLeft = differenceInSeconds(nextMinute, now)
const minutesLeft = differenceInMinutes(nextHour, now)
const hoursLeft = differenceInHours(tomorrow, now)
const daysLeft = differenceInDays(nextYear, now)
const yearsLeft = differenceInYears(expiryDate, now)
return { secondsLeft, minutesLeft, hoursLeft, daysLeft, yearsLeft }
}