๋ชจ๋ ํ๋ก ํธ์๋ ํ๋ก์ ํธ์์ Day.js๋ Moment.js ๋ฅผ ๋์ฒดํ๊ธฐ ์ํ ์๋ฐ์คํฌ๋ฆฝํธ Date ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค. Moment.js๊ฐ ๋์ด์ ๊ด๋ฆฌ๋์ง ์๊ธฐ ๋๋ฌธ์ Moment์ ๋น์ทํ๋ฉด์๋ ๊ฐ๋ฒผ์ด ํจํค์ง ์ฌ์ด์ฆ ๋๋ถ์ ๋๋ถ๋ถ์ ํ๋ก์ ํธ์์ ์ฑํ๋์ด ์ฌ์ฉ๋๊ณ ์์ ๊ฒ ๊ฐ๋ค. ํ์ฌ ํ๋ก์ ํธ๋ Quasar ํ๋ ์์ํฌ๋ฅผ ์ฌ์ฉํ๊ณ ์๊ธฐ ๋๋ฌธ์ Date Utils๋ฅผ ์ฌ์ฉํ ์๋ ์์ผ๋ Day.js ๋ฅผ ๋ณ๋๋ก ์ถ๊ฐํ์ฌ ํ์ฉํ๊ณ ์๋ค.
TL;DR โ
- format : ํ์์กด ์คํ์ ์ด ํฌํจ๋ ๋ฌธ์์ด ๋๋ ํน์ ํจํด์ ๋ฌธ์์ด์ด ํ์ํ ๊ฒฝ์ฐ
- toISOString : UTC(Z) ๊ธฐ๋ฐ ๋ฌธ์์ด์ด ํ์ํ ๊ฒฝ์ฐ
- valueOf : ๋ฐ๋ฆฌ์ด ๊ธฐ๋ฐ ์ ๋์ค ํ์์คํฌํ๊ฐ ํ์ํ ๊ฒฝ์ฐ
- toDate : ์๋ฐ์คํฌ๋ฆฝํธ Date ๊ฐ์ฒด๊ฐ ํ์ํ ๊ฒฝ์ฐ
- tz: ์๊ฐ๋๊ฐ ์ค์ ๋ ๋ ์ง๊ฐ ํ์ํ ๊ฒฝ์ฐ
- tz.setDefault: ๊ธฐ๋ณธ ์๊ฐ๋๋ฅผ ์ค์ ํ๋ ค๋ ๊ฒฝ์ฐ
Setup with Vue 3 โ
import dayjs from 'dayjs'
import { createApp } from 'vue'
const app = createApp(App)
app.config.globalProperties.$dayjs = dayjs
app.mount("#app')
๋ณธ ๊ธ์ ๋ชจ๋ ์์ ์ฝ๋๋ ECMAScript 2015(ES6)๋ถํฐ ์ฌ์ฉํ ์ ์๋ import, export ๋ฅผ ์ด์ฉํ๋ ESM ๋ฐฉ์์ผ๋ก ์ด๋ฃจ์ด์ง๋๋ค.
Day.js creates a wrapper for the Date object โ
Day.js ๋ ์๋ฐ์คํฌ๋ฆฝํธ Date ๊ฐ์ฒด๋ฅผ ๋ํํ ๊ฐ์ฒด๋ฅผ ๋ง๋ ๋ค. ์ฌํ๋ฆฌ ๋ธ๋ผ์ฐ์ ์์ Invalid Date ๊ฐ ํ์๋ ์ด์๋ ๋ธ๋ผ์ฐ์ ์ ์๋ฐ์คํฌ๋ฆฝํธ Date ๊ฐ์ฒด์ ์์กดํ๊ธฐ ๋๋ฌธ์ด๋ค. ๊ทธ๋ฆฌ๊ณ Day.js ๊ฐ์ฒด๋ immutable ํ๋ฏ๋ก ๋ณ๊ฒฝ์ฌํญ์ ์๋ก์ด ๊ฐ์ฒด์ ์ ์ฉ๋์ด ๋ฐํ๋๋ค.
import dayjs from 'dayjs'
dayjs() // Same as "dayjs(new Date())"
dayjs(1755874800000).format() // 2025-08-23T00:00:00+09:00
Day.js ๊ธฐ๋ณธ ์๊ฐ๋ ์ค์ ํ๊ธฐ โ
Day.js ๋ ๋ธ๋ผ์ฐ์ ํ์์กด์ ๊ธฐ๋ฐ์ผ๋ก ๋ ์ง ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ค. ๋ง์ฝ, UTC ๋๋ ์ฌ์ฉ์ ๊ณ์ ์ ํ์์กด์ ์ ์ฉํ๋ ค๋ฉด UTC ์ TimeZone ํ๋ฌ๊ทธ์ธ์ ์ถ๊ฐํด์ผํ๋ค. ์๊ฐ๋๋ฅผ ์ค์ ํ๋ฉด ์๋ฐ์คํฌ๋ฆฝํธ์์ Intl.RelativeTimeFormat ๋ฅผ ์ฌ์ฉํ์ฌ ์๋์ ์ธ ์๊ฐ ํ์์ผ๋ก ํํํ ์ ์๋ ๊ฒ ์ฒ๋ผ RelativeTime ํ๋ฌ๊ทธ์ธ์ ์ถ๊ฐํ์ฌ ์๋์ ์ธ ์๊ฐ์ ํ์ํ ์ ์๋ค. ์๋์ ์ธ ์๊ฐ์ ํ์ํ ๋์๋ ๋ก์ผ์ผ ์ ๋ณด๋ ์ค์ ํ๋๊ฒ ์ข๋ค.
import { boot } from 'quasar/wrappers';
import dayjs from "dayjs";
import utc from "dayjs/plugin/utc";
import timezone from "dayjs/plugin/timezone";
import relativeTime from 'dayjs/plugin/relativeTime'
import 'dayjs/locale/ko'
export default boot(({ app }) => {
dayjs.extend(utc)
dayjs.extend(timezone)
dayjs.extend(relativeTime);
dayjs.tz.setDefault('Asia/Seoul')
dayjs.locale('ko')
app.config.globalProperties.$dayjs = dayjs
})
Day.js ๊ฐ์ฒด๋ฅผ ๋ ์ง ๋ฐ์ดํฐ๋ก ๋ณํํ๊ธฐ โ
Day.js ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ ๋ฐฉ๋ฒ์ ์๋ฐ์คํฌ๋ฆฝํธ์ Date ๊ฐ์ฒด์ ๋์ผํ๋ค. ISO 8601 ํจํด์ ๋ฌธ์์ด์ ์ฌ์ฉํ์ฌ ๋ง๋ค๊ฑฐ๋ ์ฃผ๋ก ์๋ฒ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ฐ์ ์๊ฐ ์ ๋ณด๋ฅผ ๊ตํํ๊ธฐ ์ํ ์ซ์ ํํ์ ์๊ฐ๊ฐ์ธ ์ซ์ ํํ์ Unix Timestamp๋ฅผ ์ฌ์ฉํ ์๋ ์๋ค. ์ด์ ๋ฐ๋๋ก format ํจ์๋ก ํน์ ํจํด์ ๋ฌธ์์ด๋ก ๋ณํํ๊ฑฐ๋ ์๋ฒ API ๊ฐ ์ ๋์ค ํ์์คํฌํ ํํ์ ์ ๋ณด๋ฅผ ์๊ตฌํ๋๋ก ์์ฑ๋์ด์๋ค๋ฉด valueOf ํจ์๋ก ๊ฐ์ ธ์์ ์ ๋ฌํ ์ ์๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฌ ํ์์กด์ ํ์ ์คํ์ ์ด ํฌํจ๋ ISO 8601 ํ์์ผ๋ก ํฌ๋งทํ ์ ์ง์ํ๋๋ฐ, ๋ง์ฝ, UTC ๊ธฐ์ค์ ISO 8601 ํ์์ผ๋ก ๋ณํํ๊ณ ์ ํ๋ ๊ฒฝ์ฐ์๋ toISOString ํจ์๋ฅผ ์ฌ์ฉํ ์ ์๋ค.
const d = dayjs(1755874800000)
d.format() // 2025-08-23T00:00:00+09:00
d.toISOString() // 2025-08-22T15:00:00.000Z
d.valueOf() // 1755874800000