42 lines
1.1 KiB
TypeScript
42 lines
1.1 KiB
TypeScript
export const formatDate = (
|
|
date: Date | string,
|
|
options?: Intl.DateTimeFormatOptions
|
|
): string => {
|
|
const dateObj = typeof date === "string" ? new Date(date) : date;
|
|
|
|
const defaultOptions: Intl.DateTimeFormatOptions = {
|
|
year: "numeric",
|
|
month: "long",
|
|
day: "numeric",
|
|
};
|
|
|
|
return dateObj.toLocaleDateString("ko-KR", { ...defaultOptions, ...options });
|
|
};
|
|
|
|
export const formatRelativeTime = (date: Date | string): string => {
|
|
const dateObj = typeof date === "string" ? new Date(date) : date;
|
|
const now = new Date();
|
|
const diffInSeconds = Math.floor((now.getTime() - dateObj.getTime()) / 1000);
|
|
|
|
if (diffInSeconds < 60) {
|
|
return "방금 전";
|
|
}
|
|
|
|
const diffInMinutes = Math.floor(diffInSeconds / 60);
|
|
if (diffInMinutes < 60) {
|
|
return `${diffInMinutes}분 전`;
|
|
}
|
|
|
|
const diffInHours = Math.floor(diffInMinutes / 60);
|
|
if (diffInHours < 24) {
|
|
return `${diffInHours}시간 전`;
|
|
}
|
|
|
|
const diffInDays = Math.floor(diffInHours / 24);
|
|
if (diffInDays < 7) {
|
|
return `${diffInDays}일 전`;
|
|
}
|
|
|
|
return formatDate(dateObj);
|
|
};
|