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