]>
Commit | Line | Data |
---|---|---|
1 | import { Pipe, PipeTransform } from '@angular/core' | |
2 | ||
3 | // Thanks: https://stackoverflow.com/questions/3177836/how-to-format-time-since-xxx-e-g-4-minutes-ago-similar-to-stack-exchange-site | |
4 | ||
5 | @Pipe({name: 'fromNow'}) | |
6 | export class FromNowPipe implements PipeTransform { | |
7 | ||
8 | transform (value: number) { | |
9 | const seconds = Math.floor((Date.now() - value) / 1000) | |
10 | ||
11 | let interval = Math.floor(seconds / 31536000) | |
12 | if (interval > 1) { | |
13 | return interval + ' years ago' | |
14 | } | |
15 | ||
16 | interval = Math.floor(seconds / 2592000) | |
17 | if (interval > 1) return interval + ' months ago' | |
18 | if (interval === 1) return interval + ' month ago' | |
19 | ||
20 | interval = Math.floor(seconds / 604800) | |
21 | if (interval > 1) return interval + ' weeks ago' | |
22 | if (interval === 1) return interval + ' week ago' | |
23 | ||
24 | interval = Math.floor(seconds / 86400) | |
25 | if (interval > 1) return interval + ' days ago' | |
26 | if (interval === 1) return interval + ' day ago' | |
27 | ||
28 | interval = Math.floor(seconds / 3600) | |
29 | if (interval > 1) return interval + ' hours ago' | |
30 | if (interval === 1) return interval + ' hour ago' | |
31 | ||
32 | interval = Math.floor(seconds / 60) | |
33 | if (interval >= 1) return interval + ' min ago' | |
34 | ||
35 | return Math.floor(seconds) + ' sec ago' | |
36 | } | |
37 | } |