๐ฐ๐ท Vue์์ dayjs๋ก ํ๊ตญ ์๊ฐ(KST) ์ฒ๋ฆฌํ๋ ๋ฒ ์ ๋ฆฌ โ
์๋
ํ์ธ์! ํ๋ก ํธ์๋ ๊ฐ๋ฐํ๊ณ ์๋ ์์ฑ์
๋๋ค. ๐
Vue ํ๋ก์ ํธ ํ๋ค ๋ณด๋ฉด ๋ ์ง ๋ค๋ฃฐ ์ผ์ด ์ง์ง ๋ง์ฃ .
๊ฒ์๊ธ ์์ฑ ์๊ฐ, ์ฑํ
์๊ฐ, ์์ฝ ์๊ฐ ๋ฑ๋ฑโฆ
์ด๋ด ๋๋ง๋ค ๋งค๋ฒ new Date() ์ฐ๋ฉด์ ๊ณ ์ํ๋ค๊ฐ,
์ ๋ ์์ฆ dayjs๋ฅผ ์ ์ฉํ๊ณ ์์ด์.
์ด๋ฒ ํฌ์คํ
์์๋ dayjs๋ฅผ Vue์์ ์ด๋ป๊ฒ ์ธํ
ํ๋์ง,
๊ทธ๋ฆฌ๊ณ ํ๊ตญ ์๊ฐ(KST) ๊ธฐ์ค์ผ๋ก ๋ ์ง๋ฅผ ํฌ๋งทํ๋ ๋ฒ๊น์ง ์ฐจ๊ทผ์ฐจ๊ทผ ์ ๋ฆฌํด๋ณผ๊ฒ์.
โ 1. dayjs ์ค์นํ๊ธฐ โ
๋จผ์ ๊ธฐ๋ณธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ถํฐ ์ค์นํด์:
npm install dayjs
์ฐ๋ฆฌ๊ฐ ํ๊ตญ ์๊ฐ(KST)์ ๋ค๋ฃจ๋ ค๋ฉด timezone ๊ด๋ จ ํ๋ฌ๊ทธ์ธ๋ ๊ฐ์ด ์ค์นํด์ค์ผ ํด์:
npm install dayjs-plugin-utc dayjs-plugin-timezone
๐งฉ 2. ํ๋ฌ๊ทธ์ธ extend ํ๊ธฐ โ
dayjs๋ ํ๋ฌ๊ทธ์ธ์ ์ง์ extend() ํด์ค์ผ ์๋ํด์.
ํนํ timezone ํ๋ฌ๊ทธ์ธ์ ์ฐ๋ ค๋ฉด utc ํ๋ฌ๊ทธ์ธ๋ ๋จผ์ extend ํด์ค์ผ ํด์!
// utils/dayjs.js ๋๋ composables/dayjs.js ๊ฐ์ ํ์ผ๋ก ๋ง๋ค๊ธฐ ์ถ์ฒ
import dayjs from "dayjs";
import utc from "dayjs-plugin-utc";
import timezone from "dayjs-plugin-timezone";
// ํ๋ฌ๊ทธ์ธ ๋ฑ๋ก (์์ ์ค์!)
dayjs.extend(utc);
dayjs.extend(timezone);
// ๊ธฐ๋ณธ ํ์์กด์ 'Asia/Seoul'๋ก ์ง์
dayjs.tz.setDefault("Asia/Seoul");
export default dayjs;
์ด์ import dayjs from '@/utils/dayjs'
๋ง ํ๋ฉด, ํญ์ ์์ธ ์๊ฐ ๊ธฐ์ค์ผ๋ก ๋ ์ง๋ฅผ ๋ค๋ฃฐ ์ ์์ด์. ํธํ์ฃ ?
๐ 3. ํ๊ตญ์ด(locale) ์ค์ ๊น์ง ํด์ฃผ๊ธฐ โ
ํ๊ตญ์์ผ๋ก '์ค์ ', '์์์ผ' ๊ฐ์ ํํ์ ์ฐ๋ ค๋ฉด, ko locale๋ ์ ์ฉํด์ค์ผ ํด์:
npm install dayjs
(์ด๋ฏธ ์ค์นํ์ผ๋ฉด ์๋ต ๊ฐ๋ฅ)
// utils/dayjs.js์ ์ด์ด์
import "dayjs/locale/ko";
dayjs.locale("ko"); // ๋ ์ง ํ์๋ฅผ ํ๊ตญ์ด๋ก
๐งช 4. ์ฌ์ฉ ์์ โ
์ด์ ์ด๋์๋ ์๋์ฒ๋ผ ์ฌ์ฉํ๋ฉด ๋ผ์:
import dayjs from "@/utils/dayjs";
const now = dayjs();
console.log(now.format("YYYY๋
MM์ DD์ผ A hh์ mm๋ถ"));
// ๐ ์: 2025๋
05์ 08์ผ ์คํ 03์ 21๋ถ
๋๋ ํน์ ์๊ฐ ํฌ๋งทํ :
const formatted = dayjs("2025-05-08T06:00:00Z")
.tz("Asia/Seoul")
.format("YYYY-MM-DD HH:mm");
console.log(formatted); // ๐ 2025-05-08 15:00
๐๏ธ 5. ์์ฃผ ์ฐ๋ ํฌ๋งท ์ ๋ฆฌ โ
๋ชฉ์ | ํฌ๋งท ๋ฌธ์์ด | ๊ฒฐ๊ณผ ์์ |
---|---|---|
๋ ์ง๋ง | YYYY-MM-DD | 2025-05-08 |
๋ ์ง+์๊ฐ | YYYY-MM-DD HH:mm | 2025-05-08 15:00 |
ํ๊ตญ์ ํ๊ธฐ | YYYY๋ M์ D์ผ dddd | 2025๋ 5์ 8์ผ ๋ชฉ์์ผ |
์ค์ /์คํ | A hh:mm | ์คํ 03:00 |
โ ์ ๊น! .tz() ์ ๋๋ ์ด์ ? โ
ํน์ ์๋์ฒ๋ผ ์ฝ๋๋ฅผ ์งฐ๋๋ฐ .tz() ํจ์๊ฐ undefined๋ผ๊ณ ์๋ฌ ๋๋์?
import dayjs from "dayjs";
const time = dayjs().tz("Asia/Seoul"); // โ ์๋ฌ ๋ฐ์
๊ทธ๋ด ๋ ํ๋ฌ๊ทธ์ธ extend๋ฅผ ์ ํ ๊ฑฐ์์!
๋ฐ๋์ ์ด๋ ๊ฒ ํด์ค์ผ .tz()๊ฐ ์๋ํด์:
dayjs.extend(utc);
dayjs.extend(timezone);
๐ ๋ง๋ฌด๋ฆฌ โ
์ ๋ ์์ ์ moment.js ๋ง์ด ์ผ๋๋ฐ, ์์ฆ์ ๊ฐ๋ณ๊ณ ๋น ๋ฅธ dayjs๋ก ๊ฐ์ํ์ด์.
Vue๋๋ ์ ์ด์ธ๋ฆฌ๊ณ , ํนํ ํ๊ตญ ์๊ฐ(KST) ๊ธฐ์ค์ผ๋ก ๋ ์ง ๋ค๋ฃฐ ์ผ์ด ๋ง์ ๋ถ๋ค์๊ฒ ์ ๋ง ๊ฐ์ถ์
๋๋ค.
์ด ๊ธ์ด Vue์์ ๋ ์ง ๋ค๋ฃฐ ๋ ๋์๋์ผ๋ฉด ์ข๊ฒ ์ด์!