A social knowledge tool for researchers built on ATProto
1const intervals = [
2 { label: 'y', seconds: 31536000 },
3 { label: 'mo', seconds: 2592000 },
4 { label: 'd', seconds: 86400 },
5 { label: 'h', seconds: 3600 },
6 { label: 'm', seconds: 60 },
7 { label: 's', seconds: 1 },
8];
9
10export const getRelativeTime = (dateString: string) => {
11 const date = new Date(dateString);
12 const seconds = Math.floor((Date.now() - date.getTime()) / 1000);
13 const interval = intervals.find((i) => i.seconds < seconds);
14
15 if (!interval) return 'just now';
16 const count = Math.floor(seconds / interval.seconds);
17 if (count < 1) return 'just now';
18
19 return `${count}${interval.label}`;
20};