formatDate / timestampToTime
토큰 패턴으로 날짜를 다듬습니다.
API
formatDate(value?, pattern?)
| 매개변수 | 설명 | 타입 | 기본값 |
|---|---|---|---|
value | 타임스탬프, 날짜 문자열, Date. 빼면 지금 시각 | number | string | Date | 지금 |
pattern | 토큰 패턴 | string | 'YYYY-MM-DD HH:mm:ss' |
| 토큰 | 뜻 | 토큰 | 뜻 |
|---|---|---|---|
YYYY/YY | 연 | mm/m | 분 |
MM/M | 월(1–12) | ss/s | 초 |
DD/D | 일 | SSS | 밀리초 |
HH/H | 시(0–23) | A/a | AM/PM · am/pm |
hh/h | 시(1–12) | [...] | 그대로 낼 글자 |
입력을 해석할 수 없으면 'Invalid Date'를 반환합니다.
timestampToTime(timestamp?)
더는 권하지 않습니다. 인스턴스에 format 메서드를 붙인 Date를 반환합니다.
예시
js
import { formatDate } from 'ranuts';
formatDate(); // '2026-07-25 14:30:00'
formatDate(1753425000000, 'YYYY/MM/DD'); // '2026/07/25'
formatDate(new Date(), 'YYYY[年]MM[月]DD[日] hh:mm a');
formatDate('not a date'); // 'Invalid Date'참고
- 대소문자가 다릅니다.
MM은 월,mm은 분이고,HH는 24시간제,hh는 12시간제입니다. - 패턴은 한 번에 치환합니다. 그래서 방금 써 넣은 값이 뒤의 토큰에 다시 걸리는 일이 없습니다.
- 그대로 낼 글자는
[]로 감싸 치환에서 빼세요.
0.3에서 고치고 갈아치웠습니다
예전 포매터는 대소문자를 가리지 않는 플래그를 단 .replace()를 여섯 번 이어 붙였습니다. 결과는 두 가지였습니다. 뒤의 패턴이 앞의 패턴이 막 써 넣은 숫자를 잡을 수 있었고, /M+/g와 /m+/g와 /D+/gi가 서로 겹쳤습니다. 그래서 yyyy-mm-dd 같은 소문자 패턴은 연-분-일을 냈습니다.
timestampToTime은 더는 권하지 않으며 formatDate를 쓰세요. Date 인스턴스에 메서드를 붙여 봐야 직렬화하면 사라지고, Function 이상으로 타입을 붙일 수도 없습니다. 그 format은 이제 formatDate에 맡기므로, 이미 쓰던 쪽도 고쳐진 토큰 처리를 그대로 받습니다.