/** * DOLCE 날짜 포맷팅 유틸리티 * * SWP의 날짜 포맷팅 함수를 재사용 * 모든 날짜는 KST (Korea Standard Time, GMT+9) 타임존 */ import { formatSwpDate } from "@/lib/swp/utils"; import { format, parseISO, isValid } from "date-fns"; /** * SWP와 동일한 방식 * Postgres Date 타입(ISO String) 처리 추가 */ export function formatDolceDateTime(dateStr: string | null): string { if (!dateStr) return "-"; // ISO string check (e.g. "2023-11-27T10:20:30.000Z" or similar) if (dateStr.includes("-") && (dateStr.includes("T") || dateStr.includes(":"))) { try { const date = parseISO(dateStr); if (isValid(date)) { // Requested format: YYYY-MM-DD AM/PM HH:mm:ss // date-fns format: yyyy-MM-dd a hh:mm:ss return format(date, "yyyy-MM-dd a hh:mm:ss"); } } catch (e) { // ignore parse error, fallback to default console.error("Date parse error", e); } } return formatSwpDate(dateStr); } /** * YYYYMMDD 형식을 YYYY-MM-DD로 변환 * * @param dateStr "20170220" 형식 * @returns "2017-02-20" */ export function formatDolceDateYYYYMMDD(dateStr: string | null): string | null { if (!dateStr || dateStr.length !== 8) return null; try { const year = dateStr.substring(0, 4); const month = dateStr.substring(4, 6); const day = dateStr.substring(6, 8); return `${year}-${month}-${day}`; } catch { return dateStr; } } /** * 통합 날짜 포맷팅 * * @param dateStr 날짜 문자열 (다양한 형식 지원) * @returns 포맷팅된 날짜 문자열 */ export function formatDolceDate(dateStr: string | null): string { if (!dateStr) return "-"; // YYYYMMDD 형식 (8자리 숫자) if (/^\d{8}$/.test(dateStr)) { return formatDolceDateYYYYMMDD(dateStr) || dateStr; } // 날짜+시간 형식 return formatDolceDateTime(dateStr); }