40 lines
1.1 KiB
TypeScript
40 lines
1.1 KiB
TypeScript
import { Pipe, PipeTransform } from '@angular/core';
|
|
|
|
@Pipe({
|
|
name: 'dateAgo',
|
|
pure: true
|
|
})
|
|
export class DateAgoPipe implements PipeTransform {
|
|
|
|
transform(value: any, args?: any): any {
|
|
if (value) {
|
|
const seconds = Math.abs(Math.floor((+new Date() - +new Date(value)) / 1000));
|
|
if (seconds < 29) // less than 30 seconds ago will show as 'Just now'
|
|
return 'Just now';
|
|
const intervals: { [key: string]: number } = {
|
|
'year': 31536000,
|
|
'month': 2592000,
|
|
'week': 604800,
|
|
'day': 86400,
|
|
'hour': 3600,
|
|
'minute': 60,
|
|
'second': 1
|
|
};
|
|
let counter;
|
|
for (const i in intervals) {
|
|
const number = (seconds / intervals[i]).toFixed(1);
|
|
counter = Math.floor(seconds / intervals[i]);
|
|
|
|
if (counter > 0)
|
|
return number + ' ' + i + 's'; // plural (2 days ago)
|
|
// if (counter === 1) {
|
|
// return number + ' ' + i + ''; // singular (1 day ago)
|
|
// } else {
|
|
// return number + ' ' + i + 's'; // plural (2 days ago)
|
|
// }
|
|
}
|
|
}
|
|
return value;
|
|
}
|
|
|
|
} |