50 lines
1.0 KiB
TypeScript
50 lines
1.0 KiB
TypeScript
|
const months = [
|
||
|
'January',
|
||
|
'February',
|
||
|
'March',
|
||
|
'April',
|
||
|
'May',
|
||
|
'June',
|
||
|
'July',
|
||
|
'August',
|
||
|
'September',
|
||
|
'October',
|
||
|
'November',
|
||
|
'December'
|
||
|
];
|
||
|
|
||
|
const suffixes = ['','st','nd','rd','th'];
|
||
|
|
||
|
export default function prettyDatePrint(date: Date) {
|
||
|
const now = new Date();
|
||
|
const diff = now.getTime() - date.getTime();
|
||
|
|
||
|
let tdiff = Math.floor(diff/1000);
|
||
|
|
||
|
if (tdiff < 60) {
|
||
|
return `${tdiff} seconds ago`;
|
||
|
}
|
||
|
|
||
|
tdiff = Math.floor(tdiff/60);
|
||
|
if (tdiff < 60) {
|
||
|
return `${tdiff} minute${tdiff === 1? '' : 's'} ago`;
|
||
|
}
|
||
|
|
||
|
tdiff = Math.floor(tdiff/60);
|
||
|
if (tdiff < 24) {
|
||
|
return `${tdiff} hour${tdiff === 1? '' : 's'} ago`;
|
||
|
}
|
||
|
if (tdiff < 48) {
|
||
|
return `Yesterday`;
|
||
|
}
|
||
|
|
||
|
const year = date.getFullYear();
|
||
|
const month = months[date.getMonth()];
|
||
|
const day = date.getDate();
|
||
|
let sfx;
|
||
|
if (day >= 1 && day <= 3)
|
||
|
sfx = suffixes[day];
|
||
|
else
|
||
|
sfx = suffixes[4];
|
||
|
return `${day}${sfx} ${month} ${year}`;
|
||
|
}
|