// 마감까지 남은 시간 'HH시간 MM분 SS초'. 지났으면 종료 문구, 잘못된 값은 '-'. // 남은 시간은 "절대 시각 간 차이(duration)"라 타임존과 무관하다. 백엔드가 UTC(+00:00 오프셋 포함)로 // 내려주므로 new Date 파싱이 정확하면 KST 변환이 따로 필요 없다(날짜로 "표시"할 때만 KST 고정 필요 → lib/datetime). export function getTimeRemaining(targetDateTime: string | Date): string { const now = Date.now() const target = new Date(targetDateTime).getTime() if (Number.isNaN(target)) return '-' const diff = target - now if (diff <= 0) return '종료되었습니다.' const hours = Math.floor(diff / (1000 * 60 * 60)) const minutes = Math.floor((diff % (1000 * 60 * 60)) / (1000 * 60)) const seconds = Math.floor((diff % (1000 * 60)) / 1000) const pad = (n: number) => String(n).padStart(2, '0') return `${pad(hours)}시간 ${pad(minutes)}분 ${pad(seconds)}초` }