Moment.js는 유지보수 모드이며, 개발팀도 새 프로젝트에는 최신 라이브러리를 권장합니다. Day.js는 거의 같은 API를 약 2KB로 제공하므로, 각 섹션에 Day.js 대응 코드도 함께 보여 줍니다.
토큰을 클릭하면 포맷 문자열에 삽입됩니다. 예시는 기준 날짜와 로캘로 표시됩니다.
| 토큰 | 예시 | 의미 | |
|---|---|---|---|
| 연도와 분기 | |||
| 네 자리 연도 | |||
| 두 자리 연도 | |||
| 분기(1–4) | |||
| 분기(서수) | |||
| 월 | |||
| 월(1–12) | |||
| 월(서수) | |||
| 월(두 자리) | |||
| 월 약칭 | |||
| 월 이름 | |||
| 일(월 기준 / 연 기준) | |||
| 일 | |||
| 일(서수) | |||
| 일(두 자리) | |||
| 연중 일수 | |||
| 연중 일수(세 자리) | |||
| 요일 | |||
| 요일 번호(0 = 일요일) | |||
| 요일(가장 짧게) | |||
| 요일(약칭) | |||
| 요일(전체) | |||
| 요일 번호(로캘 기준) | |||
| ISO 요일 번호(1 = 월요일) | |||
| 주 | |||
| 연중 주차(로캘 기준) | |||
| 주차(서수) | |||
| 주차(두 자리) | |||
| ISO 주차 | |||
| ISO 주차(두 자리) | |||
| 주 기준 연도(로캘 기준) | |||
| ISO 주 기준 연도 | |||
| 시 | |||
| 시, 0–23 | |||
| 시, 00–23 | |||
| 시, 1–12 | |||
| 시, 01–12 | |||
| 시, 1–24 | |||
| 시, 01–24 | |||
| 분과 초 | |||
| 분 | |||
| 분(두 자리) | |||
| 초 | |||
| 초(두 자리) | |||
| 10분의 1초 | |||
| 100분의 1초 | |||
| 밀리초 | |||
| 오전 / 오후 | |||
| AM / PM(오전 / 오후) | |||
| am / pm(소문자) | |||
| 시간대 | |||
| UTC 오프셋, ±HH:mm | |||
| UTC 오프셋, ±HHmm | |||
| moment-timezone 필요 | 시간대 약칭 | ||
| moment-timezone 필요 | 시간대 이름 | ||
| Unix 시간 | |||
| Unix 초 | |||
| Unix 밀리초 | |||
| 로캘 포맷 | |||
| 로캘 시간 | |||
| 로캘 시간(초 포함) | |||
| 로캘 숫자 날짜 | |||
| 로캘 날짜(월 이름 포함) | |||
| 로캘 날짜와 시간 | |||
| 로캘 날짜, 요일, 시간 | |||
| 짧은 숫자 날짜 | |||
| 짧은 날짜(월 이름 포함) | |||
| 짧은 날짜와 시간 | |||
| 짧은 날짜, 요일, 시간 | |||
| 이스케이프 | |||
| 대괄호 안의 글자는 그대로 출력 | |||
비워 두면 ISO 8601로 파싱합니다.
각 행은 기준 날짜를 옮긴 뒤 from()과 calendar()로 기준과의 관계를 표현합니다.
| 이동 | from(ref) | calendar(ref) |
|---|---|---|
| .add(-45, 'second') | ||
| .add(-10, 'minute') | ||
| .add(-3, 'hour') | ||
| .add(-1, 'day') | ||
| .add(-5, 'day') | ||
| .add(-3, 'month') | ||
| .add(-2, 'year') | ||
| .add(30, 'minute') | ||
| .add(2, 'day') | ||
| .add(1, 'month') |
일상적인 작업을 실시간 결과와 함께 보여 줍니다. ‘해 보기’를 누르면 아래 코드 실행기에 불러옵니다.
| 작업 | Moment.js |
|---|---|
현재 시간 포맷 | moment().format('YYYY-MM-DD HH:mm:ss')→ |
일수 더하기 | moment('2023-01-01').add(1, 'days').format('YYYY-MM-DD')→ |
지금으로부터 얼마나 | moment().subtract(7, 'days').fromNow()→ |
이번 달 첫날 | moment().startOf('month').format('YYYY-MM-DD')→ |
올해 마지막 날 | moment().endOf('year').format('YYYY-MM-DD')→ |
이번 주 시작(로캘 기준) | moment().startOf('week').format('YYYY-MM-DD ddd')→ |
두 날짜 사이 일수 | moment().diff(moment('2022-01-01'), 'days')→ |
이번 달 일수 | moment().daysInMonth()→ |
분기 | moment().quarter()→ |
달력식 시간 | moment().add(1, 'days').calendar()→ |
두 날짜 사이인지 | moment('2024-12-31').isBetween('2024-01-01', '2025-01-01')→ |
오늘인지 | moment().isSame(moment(), 'day')→ |
윤년인지 | moment('2024-01-01').isLeapYear()→ |
날짜를 엄격하게 검증 | moment('2023-02-30', 'YYYY-MM-DD', true).isValid()→ |
사용자 지정 포맷 파싱 | moment('13/10/2026 14:30', 'DD/MM/YYYY HH:mm').format()→ |
Unix 타임스탬프(초) | moment().unix()→ |
현재 UTC 시간 | moment.utc().format()→ |
다른 시간대의 시간 | moment-timezone 필요 |
기간을 자연어로 | moment.duration(90, 'minutes').humanize()→ |
월말에 한 달 더하기 | moment('2026-01-31').add(1, 'months').format('YYYY-MM-DD')→ |
재할당 없이 add() 호출 | (() => { const d = moment('2026-01-01'); d.add(1, 'days'); return d.format('YYYY-MM-DD') })()→ |
moment를 사용하는 식을 입력하면 브라우저에서 바로 실행합니다. 위 코드에 쓰인 플러그인이 모두 켜져 있고, 위에서 고른 로캘이 적용됩니다.
Moment.js의 포맷, 파싱, 상대 시간, 기간을 시험해 보는 플레이그라운드로, Moment 결과 옆에 Day.js 결과를 함께 보여 줍니다. 서로 다른 부분이 표시되므로 코드를 옮기기 전에 무엇이 바뀌는지 확인할 수 있습니다. 두 라이브러리 모두 브라우저에서 실행됩니다.
‘기준 날짜와 시간’과 ‘로캘’을 정하고, 코드에서 moment.utc()를 쓴다면 ‘UTC로 처리’를 켭니다.
‘포맷 문자열’에 형식을 입력하면 ‘출력’에 Moment와 Day.js 결과가 나오고 ‘같은 출력’ 또는 ‘다른 출력’으로 표시됩니다.
‘포맷 토큰’ 표에서 Day.js에 없거나 플러그인이 필요한 토큰을 확인하고, 토큰을 눌러 포맷에 넣습니다.
‘파싱 플레이그라운드’, ‘상대 시간’, ‘기간(Duration)’에서 두 라이브러리를 비교합니다. Day.js 결과가 다른 곳은 색으로 강조됩니다.
‘자주 쓰는 코드’에서 일상적인 작업의 두 가지 코드를 보고, ‘해 보기’로 Moment 버전을 ‘코드 실행기’에서 실행합니다.
Moment.js는 유지보수 모드이며, 개발팀도 새 프로젝트에는 최신 라이브러리를 권장합니다. 페이지 상단 안내에서 Moment 프로젝트 상태 문서와 Day.js 플레이그라운드로 이동할 수 있습니다.
가장 큰 것은 변경 가능성입니다. Moment의 add()는 원본 객체를 바꾸지만 Day.js는 새 객체를 돌려주므로 결과를 다시 할당해야 합니다. 또한 Day.js에서는 많은 기능에 플러그인이 필요하며, 코드마다 필요한 플러그인을 적어 두었습니다.
Qo, Mo, DDD, DDDD, e, E, S, SS입니다. ‘포맷 토큰’ 표에는 이들이 Day.js 미지원으로 표시되고, 나머지는 필요한 플러그인이 표시됩니다.
시간대 이름에는 별도의 moment-timezone이 필요한데 이 페이지에서는 불러오지 않으므로 표에 ‘moment-timezone 필요’로 표시됩니다. Day.js는 timezone 플러그인으로 지원합니다.
Moment.js와 Day.js의 정확한 버전은 설정 패널 아래에 표시됩니다.
아니요. 두 라이브러리와 로캘 파일 모두 이 페이지에 불러와지며, 입력한 내용은 브라우저에서 실행됩니다.