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);
							 | 
						||
| 
								 | 
							
								};
							 |