/** * 날짜 관련 유틸리티 함수 * dayjs를 사용하여 KST(한국 표준시) 기준으로 날짜 처리 */ import dayjs from "dayjs"; import utc from "dayjs/plugin/utc"; import timezone from "dayjs/plugin/timezone"; // 플러그인 확장 dayjs.extend(utc); dayjs.extend(timezone); // 기본 타임존 설정 const KST = "Asia/Seoul"; /** * KST 기준 오늘 날짜 (YYYY-MM-DD) * @returns {string} 오늘 날짜 문자열 */ export const getTodayKST = () => { return dayjs().tz(KST).format("YYYY-MM-DD"); }; /** * KST 기준 현재 시각 * @returns {dayjs.Dayjs} dayjs 객체 */ export const nowKST = () => { return dayjs().tz(KST); }; /** * 날짜 문자열 포맷팅 * @param {string|Date} date - 날짜 * @param {string} format - 포맷 (기본: 'YYYY-MM-DD') * @returns {string} 포맷된 날짜 문자열 */ export const formatDate = (date, format = "YYYY-MM-DD") => { return dayjs(date).tz(KST).format(format); }; /** * 날짜에서 년, 월, 일, 요일 추출 * @param {string|Date} date - 날짜 * @returns {object} { year, month, day, weekday } */ export const parseDateKST = (date) => { const d = dayjs(date).tz(KST); const weekdays = ["일", "월", "화", "수", "목", "금", "토"]; return { year: d.year(), month: d.month() + 1, day: d.date(), weekday: weekdays[d.day()], }; }; /** * 두 날짜 비교 (같은 날인지) * @param {string|Date} date1 * @param {string|Date} date2 * @returns {boolean} */ export const isSameDay = (date1, date2) => { return ( dayjs(date1).tz(KST).format("YYYY-MM-DD") === dayjs(date2).tz(KST).format("YYYY-MM-DD") ); }; /** * 날짜가 오늘인지 확인 * @param {string|Date} date * @returns {boolean} */ export const isToday = (date) => { return isSameDay(date, dayjs()); }; // dayjs 인스턴스도 export (고급 사용용) export { dayjs };