o2o-negosium-original/frontend/src/features/chat/lib/remainingTime.ts
민헌 ce536b43d6 feat(frontend): 채팅 페이지 API 연동 + KST 시각 표시
- apis/chat 모듈(api/queries/mutations/keys/type) + useChatController(append-only send 주입)
- useChatStore 재배선, list→chat session_id 라우팅 연결, mock 제거
- 마감/종료/권한 시 입력 잠금·목록 복귀, 가격범위 인라인 에러, CHAT_IN_PROGRESS 처리
- list 마감일 KST(Asia/Seoul) 고정 표시(lib/datetime formatKstDateTime)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-18 14:25:07 +09:00

18 lines
964 B
TypeScript

// 마감까지 남은 시간 '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)}초`
}