Epoch · local date
로컬 타임존 기준으로, 로케일이 ko이면 YYYY.MM.DD, 그 외에는 Intl 긴 월·일·연 형식을 쓰고 프리셋으로 시간·요일·짧은 연도·ISO 날짜 표시를 바꿉니다. 서버 타임스탬프(Epoch/ISO)든 Date.now()든 모두 로컬 타임존 기준으로 변환합니다.
- 앱 로케일 (useLocale)
- ko
- timeZone
- —
프리셋
dateDotTime24→ 26.05.01 00:00dateDotOnly→ 2026.05.01dateDotWeekdayTime24→ 2026.05.01 (금) 00:00monthDayWeekdayLong→ 5월 1일 금요일dateDotShortOnly→ 26.05.01dateDotShortWeekdayOnly→ 26.05.01(금)dateIsoOnly→ 2026-05-01
샘플 (프리셋별)
| Epoch (ms) | 날짜만 | 날짜+24h | 날짜+(요일)+24h | YY.MM.DD | 비고 |
|---|---|---|---|---|---|
| 1777593600000 | 2026.05.01 | 26.05.01 00:00 | 2026.05.01 (금) 00:00 | 26.05.01 | 2026-05-01 00:00 UTC |
| 1924991999999 | 2030.12.31 | 30.12.31 23:59 | 2030.12.31 (화) 23:59 | 30.12.31 | 연말 UTC |
| 1592209800000 | 2020.06.15 | 20.06.15 08:30 | 2020.06.15 (월) 08:30 | 20.06.15 | 시간 포함 |
직접 입력
- ms
- 1777593600000
- formatEpochMs(ms, preset)
- 26.05.01 00:00
dateIsoOnly (필터용 YYYY-MM-DD)
<input type="date"> 기본값·API 쿼리에 쓰는 로컬 달력 날짜입니다. rolling 기간 시작일은 feature 쪽에서 epoch ms를 계산한 뒤 dateIsoOnly로 포맷합니다.
- formatEpochMs(Date.now(), "dateIsoOnly")
- 2026-07-28
- formatEpochMs(rollingStartMs, "dateIsoOnly")
- 2026-03-01
코드
import {
formatEpochMs,
formatIsoEpochMs,
type FormatEpochMsAdminPreset,
} from "@/shared/lib/formatEpochMs";
import { useLocale } from "next-intl";
const locale = useLocale();
// UI 표시 — 서버 Epoch/ISO → 로컬 표시
formatEpochMs(response.dueAt, "dateDotWeekdayTime24", locale);
formatIsoEpochMs(response.lastSavedAt, "dateDotShortOnly");
formatIsoEpochMs(response.lastSavedAt, "monthDayWeekdayLong", locale);
// date input / API query — Date.now()도 동일 API
formatEpochMs(Date.now(), "dateIsoOnly");