JavaScript
javascript date utility
formatDate
Utility function for formatting dates in various formats with timezone support.
type DateFormat = 'short' | 'long' | 'relative' | 'iso';
export function formatDate(
date: Date | string | number,
format: DateFormat = 'short',
locale: string = 'en-US'
): string {
const dateObj = typeof date === 'string' || typeof date === 'number'
? new Date(date)
: date;
if (isNaN(dateObj.getTime())) {
return 'Invalid Date';
}
switch (format) {
case 'short':
return dateObj.toLocaleDateString(locale, {
year: 'numeric',
month: 'short',
day: 'numeric',
});
case 'long':
return dateObj.toLocaleDateString(locale, {
year: 'numeric',
month: 'long',
day: 'numeric',
weekday: 'long',
});
case 'relative':
const now = new Date();
const diffInSeconds = Math.floor((now.getTime() - dateObj.getTime()) / 1000);
if (diffInSeconds < 60) return 'just now';
if (diffInSeconds < 3600) return `${Math.floor(diffInSeconds / 60)}m ago`;
if (diffInSeconds < 86400) return `${Math.floor(diffInSeconds / 3600)}h ago`;
if (diffInSeconds < 604800) return `${Math.floor(diffInSeconds / 86400)}d ago`;
return formatDate(dateObj, 'short', locale);
case 'iso':
return dateObj.toISOString();
default:
return dateObj.toLocaleDateString(locale);
}
}
Usage
formatDate(new Date(), 'short'); // "Jan 15, 2025"
formatDate(new Date(), 'long'); // "Wednesday, January 15, 2025"
formatDate(new Date(Date.now() - 3600000), 'relative'); // "1h ago"
formatDate(new Date(), 'iso'); // "2025-01-15T12:00:00.000Z"