utilyx
Version:
Modern utility helper library for cleaner, faster TypeScript/JavaScript development 🚀🔧
55 lines (46 loc) • 1.77 kB
text/typescript
// Function: timeAgo
export function timeAgo(date: string): string {
const now = new Date();
const past = new Date(date);
const diff = now.getTime() - past.getTime();
const seconds = Math.floor(diff / 1000);
const minutes = Math.floor(seconds / 60);
const hours = Math.floor(minutes / 60);
const days = Math.floor(hours / 24);
const months = Math.floor(days / 30.44);
const years = Math.floor(months / 12);
if (years > 0) return `${years} year${years > 1 ? 's' : ''} ago`;
if (months > 0) return `${months} month${months > 1 ? 's' : ''} ago`;
if (days > 0) return `${days} day${days > 1 ? 's' : ''} ago`;
if (hours > 0) return `${hours} hour${hours > 1 ? 's' : ''} ago`;
if (minutes > 0) return `${minutes} minute${minutes > 1 ? 's' : ''} ago`;
return `just now`;
}
// Function: getTimeDiff
export function getTimeDiff(start: Date | string, end: Date | string) {
const s = new Date(start).getTime();
const e = new Date(end).getTime();
let diff = Math.abs(e - s) / 1000; // in seconds
const days = Math.floor(diff / 86400);
diff %= 86400;
const hours = Math.floor(diff / 3600);
diff %= 3600;
const mins = Math.floor(diff / 60);
const secs = Math.floor(diff % 60);
return { days, hours, mins, secs };
}
// Function: formatDate
export function formatDate(date: Date | string, format: string): string {
const d = new Date(date);
const YYYY = d.getFullYear();
const MM = String(d.getMonth() + 1).padStart(2, '0');
const DD = String(d.getDate()).padStart(2, '0');
return format
.replace('YYYY', YYYY.toString())
.replace('MM', MM)
.replace('DD', DD);
}
// Function: isLeapYear
export function isLeapYear(year: number): boolean {
return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;
}