์ด ํ์ด์ง์ ์ํ๋ AI ์ด์์คํดํธ๋ฅผ ์ฌ์ฉํ์ฌ ๋ฌธ์๋ฅผ ์์ฝํฉ๋๋ค
์ด ํ์ด์ง์ ์ฝํ ์ธ ๋ AI๋ฅผ ์ฌ์ฉํ์ฌ ๋ฒ์ญ๋์์ต๋๋ค.
์์ด ์๋ณธ ๋ด์ฉ์ ์ต์ ๋ฒ์ ์ ๋ณด๊ธฐ์ด ๋ฌธ์๋ฅผ ๊ฐ์ ํ ์์ด๋์ด๊ฐ ์์ผ์๋ฉด GitHub์ ํ ๋ฆฌํ์คํธ๋ฅผ ์ ์ถํ์ฌ ์์ ๋กญ๊ฒ ๊ธฐ์ฌํด ์ฃผ์ธ์.
๋ฌธ์์ ๋ํ GitHub ๋งํฌ๋ฌธ์์ Markdown์ ํด๋ฆฝ๋ณด๋์ ๋ณต์ฌ
Intl์ ์ฌ์ฉํด ๋ก์ผ์ผ๋ณ๋ก ๋ ์ง์ ์ซ์ ํฌ๋งทํ ํ๊ธฐ
ํ
์คํธ ๋ฒ์ญ์ ๋ค๊ตญ์ดํ(i18n)์ ๋์ ๋ณด์ด๋ ์ ๋ฐ์ ๋ถ๊ณผํฉ๋๋ค. ๋ฒ๊ทธ ๋ฆฌํฌํธ์ ๋จ๊ณจ ์์ธ์ด ๋๋ ๋๋จธ์ง ์ ๋ฐ์ ํฌ๋งทํ
์
๋๋ค. ๋
์ผ ์ฌ์ฉ์๊ฐ 1.234,56 ๋์ 1,234.56์ ๋ณด๊ฑฐ๋, ์ผ๋ณธ ์ฌ์ฉ์๊ฐ 08/02/2026์ ๋ณด๊ณ 8์๋ก ์คํดํ๊ฑฐ๋, ์๋ฒ์ ํด๋ผ์ด์ธํธ์ ๋ ๋๋ง ๊ฒฐ๊ณผ๊ฐ ๋ฌ๋ผ React ํ์ด๋๋ ์ด์
์๋ฌ๋ก ํ๋ฉด์ด ๋ฉ์ถ๋ ํ์์ด ๋ํ์ ์
๋๋ค.
์ด๋ฌํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์๋ํํฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ค์นํ ํ์๋ ์์ต๋๋ค. ์ต์ ์๋ฐ์คํฌ๋ฆฝํธ ๋ฐํ์ ํ๊ฒฝ์๋ Intl API๊ฐ ๊ธฐ๋ณธ์ผ๋ก ํ์ฌ๋์ด ์์ต๋๋ค.
๋ชฉ์ฐจ
์ง์ ์์ฑํ ๋ ์ง ํฌํผ ํจ์๋ถํฐ ์ญ์ ํ์ธ์
๊ฑฐ์ ๋ชจ๋ ํ๋ก์ ํธ์๋ ๋ค๊ตญ์ด ์ง์์ ๊ณ ๋ฏผํ๊ธฐ ์ ์ ์์ฑ๋ formatDate ํจ์๊ฐ ์กด์ฌํฉ๋๋ค. ์์, ๊ตฌ๋ถ ๊ธฐํธ, ๊ทธ๋ฆฌ๊ณ ๋๊ฐ ์์ด ์ ์ด๋ฆ์ด ์ฝ๋์ ์ง์ ๊ณ ์ ๋์ด ์์ต๋๋ค.
์ฝ๋๋ฅผ ํด๋ฆฝ๋ณด๋์ ๋ณต์ฌ
Intl.DateTimeFormat์ ์ด๋ฅผ ์์ ํ ๋์ฒดํ๋ฉฐ, ๋ชจ๋ ๋ก์ผ์ผ์์ ํ์ค์ ๋ง๊ฒ ๋์ํฉ๋๋ค:
์ฝ๋๋ฅผ ํด๋ฆฝ๋ณด๋์ ๋ณต์ฌ
์ซ์๋ ๋ง์ฐฌ๊ฐ์ง์
๋๋ค. toFixed(2)๋ ์ ์ธ๊ณ ์ด๋์๋ 1234.56์ ์ถ๋ ฅํ์ง๋ง, ์ด๋ ์ ๋ฝ ๋๋ถ๋ถ์ ๊ตญ๊ฐ ํ๊ธฐ๋ฒ๊ณผ ๋ง์ง ์์ต๋๋ค.
Intl์ด ์ง์ํ๋ ๊ธฐ๋ฅ
ํ ์ด๋ธ์ ๋ชจ๋ฌ๋ก ์ด์ด ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ๋ช ํํ๊ฒ ํ์ธ
| API | ์ฃผ ์ฉ๋ |
|---|---|
Intl.DateTimeFormat | ๋ ์ง์ ์๊ฐ (dateStyle / timeStyle ํ๋ฆฌ์
์ง์) |
Intl.NumberFormat | ์์์ , ํตํ, ๋ฐฑ๋ถ์จ, ๋จ์, ์ถ์ฝ ํ๊ธฐ |
Intl.RelativeTimeFormat | "3์ผ ์ ", "2์๊ฐ ํ" ๋ฑ์ ์๋ ์๊ฐ ํํ |
Intl.ListFormat | "์ฌ๊ณผ, ๋ฐ๋๋ ๋ฐ ์ค๋ ์ง" ๋ฑ์ ๋ชฉ๋ก ๋์ด ๊ฒฐํฉ |
Intl.PluralRules | ์์น์ ๋ฐ๋ฅธ ๋ณต์ํ ๊ท์น ํ๋ณ |
Intl.Collator | ์ธ์ด๋ณ ๊ท์น์ ๋ฐ๋ฅธ ์ฌ๋ฐ๋ฅธ ๋ฌธ์์ด ์ ๋ ฌ |
ํนํ ์์ฃผ ๊ฐ๊ณผ๋๋ ๊ฒ์ด Intl.Collator์
๋๋ค. ๋ฌธ์์ด์ ์ผ๋ฐ์ ์ธ array.sort()๋ฅผ ์คํํ๋ฉด ์ ๋์ฝ๋ ์ฝ๋ ํฌ์ธํธ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌ๋์ด ์
์ผํธ ๋ฌธ์๊ฐ z ๋ค๋ก ๋ฐ๋ฆฌ๊ณ ์ค์จ๋ด์ด รถ๊ฐ ์๋ฑํ ์์น์ ๋ฐฐ์น๋ฉ๋๋ค. ์ฌ์ฉ์์๊ฒ ๋
ธ์ถ๋๋ ๋ชฉ๋ก์ ์ ๋ ฌํ ๋๋ ๋ฐ๋์ collator๋ฅผ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
์ฝ๋๋ฅผ ํด๋ฆฝ๋ณด๋์ ๋ณต์ฌ
์ง์ ์กฐํฉํ๊ธฐ๋ณด๋ค ํ๋ฆฌ์ ์ ์ฐ์ ํ์ฉํ์ธ์
dateStyle๊ณผ timeStyle์ ์ฌ์ฉํ๋ฉด ํด๋น ๋ก์ผ์ผ์ ์๋ง์ ๋
ผ๋ฆฌ์ ์์์ ๊ตฌ๋ถ ๊ธฐํธ๊ฐ ์๋์ผ๋ก ๊ฒฐ์ ๋ฉ๋๋ค. year, month, day๋ฅผ ์๋์ผ๋ก ์กฐํฉํ๋ ๊ฒ์ ์ถ์ฒํ์ง ์์ต๋๋ค. ์ง์ญ๋ง๋ค ๊ณ ์ ํ ์์ ๊ท์น์ด ๋ค๋ฅธ๋ฐ, ์ด๋ฅผ ์์์ ์ธ ์ถ์ธก์ผ๋ก ๋ฎ์ด์จ CLDR์ ํ์ค ๋ฐ์ดํฐ๋ฅผ ๋ง๊ฐ๋จ๋ฆด ์ ์๊ธฐ ๋๋ฌธ์
๋๋ค.
์ฝ๋๋ฅผ ํด๋ฆฝ๋ณด๋์ ๋ณต์ฌ
์ข์ ํ ์ด๋ธ ์ด์ฒ๋ผ ๊ณ ์ ๋ ๋๋น๊ฐ ์ ๋์ ์ผ๋ก ์๊ตฌ๋๋ ํน๋ณํ ๋์์ธ ์ผ์ด์ค๊ฐ ์๋๋ผ๋ฉด ํญ์ ํ๋ฆฌ์ ์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
ํฌ๋งทํฐ ์์ฑ ๋น์ฉ์ ์ ์ํ์ธ์
์ฑ๋ฅ ์ต์ ํ์์ ๋งค์ฐ ์ค์ํ ํฌ์ธํธ์
๋๋ค. Intl.NumberFormat ์ธ์คํด์ค๋ฅผ ์์ฑํ ๋๋ ๋ฐฉ๋ํ ๋ก์ผ์ผ ๋ฐ์ดํฐ๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ๋ถ๋ฌ์ค๊ธฐ ๋๋ฌธ์, ์ดํ์ .format() ํธ์ถ์ ๋นํด ํจ์ฌ ๋ง์ ์์์ ์๋ชจํฉ๋๋ค. ํ
์ด๋ธ์ 1,000๊ฐ ํ์ ์ํํ๋ฉด์ ๋งค๋ฒ ์ธ์คํด์ค๋ฅผ ์์ฑํ๋ฉด ๋์ ๋๋ ๋ ๋๋ง ์ง์ฐ์ด ๋ฐ์ํฉ๋๋ค.
์ฝ๋๋ฅผ ํด๋ฆฝ๋ณด๋์ ๋ณต์ฌ
toLocaleDateString()๊ณผ toLocaleString()๋ ๋ด๋ถ์ ์ผ๋ก ๋์ผํ ๋ฉ์ปค๋์ฆ์ผ๋ก ๋์ํฉ๋๋ค. ๋จ์ผ ๊ฐ์ ๋ฐ๊ฟ ๋๋ ๋ฌธ์ ์์ง๋ง, ๋ฆฌ์คํธ๋ฅผ ์ํํ ๋๋ ์ ํฉํ์ง ์์ต๋๋ค.
๋ก์ผ์ผ๊ณผ ์ต์ ์กฐํฉ์ ํค๋ก ํ์ฉํ์ฌ ์บ์ํด ๋์ธ์:
์ฝ๋๋ฅผ ํด๋ฆฝ๋ณด๋์ ๋ณต์ฌ
ํ๋ก๋์ ํ๊ฒฝ์์๋ง ํฐ์ง๋ ํ์์กด ๋ฒ๊ทธ
๋ง์ ๊ฐ๋ฐ์๋ค์ด ๊ณจ์น๋ฅผ ์๋ ๋ฌธ์ ์ ๋๋ค. SSR ๋จ๊ณ์์ ์๋ฒ๊ฐ ๋ ์ง๋ฅผ ๋ ๋๋งํ๊ณ ๋ธ๋ผ์ฐ์ ๊ฐ ์ด๋ฅผ ํ์ด๋๋ ์ด์ ํ ๋, ์์ชฝ์์ ์์ฑํ ๋ฌธ์์ด์ด ๋ฌ๋ผ React๊ฐ Hydration Mismatch ์ค๋ฅ๋ฅผ ๋ด๋ฉฐ ๋ฉ์ถฐ ๋ฒ๋ฆฝ๋๋ค.
์์ธ์ Intl.DateTimeFormat์ ํ์์กด์ ๋ช
์ํ์ง ์์ผ๋ฉด ์ด์์ฒด์ ์ ๊ธฐ๋ณธ ํ์์กด์ ์ฐธ์กฐํ๊ธฐ ๋๋ฌธ์
๋๋ค. ๋ฐฐํฌ ์๋ฒ๋ ํต์ UTC๋ก ์ค์ ๋์ด ์์ง๋ง, ๋ก์ปฌ ๊ฐ๋ฐ ์ฅ๋น๋ ์ฌ์ฉ์์ ํ์ง ์๊ฐ๋์
๋๋ค. ๋ฐ๋ผ์ ๋ก์ปฌ์์๋ ์ฌํ๋์ง ์๊ณ ํ๋ก๋์
์์๋ง ๋ฌธ์ ๊ฐ ๋ฐ์ํฉ๋๋ค.
์ฝ๋๋ฅผ ํด๋ฆฝ๋ณด๋์ ๋ณต์ฌ
์ค์ง์ ์ธ 3๊ฐ์ง ํด๊ฒฐ์ฑ :
- ์๋ฒ ํ์์กด์ ๊ณ ์ ํ๊ณ ๋ช ์์ ์ผ๋ก ์ ๋ฌํฉ๋๋ค. ์์ ํ๊ณ ๊ฒฐ์ ๋ก ์ ์ด์ง๋ง ๋ชจ๋์๊ฒ UTC ์๊ฐ์ด ๋ ธ์ถ๋ฉ๋๋ค.
- ํด๋ผ์ด์ธํธ ์ ์ฉ์ผ๋ก ๋ ๋๋งํ๊ณ ์๋ฒ ๋ ๋๋ง ์์๋ ์์ ์ ์ธ ํ๋ ์ด์คํ๋๋ฅผ ๋ณด์ฌ์ค๋๋ค. ์ฌ์ฉ์์๊ฒ ์ ํํ์ง๋ง ์ด๊ธฐ ๋ ๋๋ง ์ ๊น๋นก์์ด ์์ ์ ์์ต๋๋ค.
- ์ฌ์ฉ์์ ํ์์กด์ ์ ์ฅํ์ฌ ์๋ฒ์ ํด๋ผ์ด์ธํธ ์์ชฝ์ ์ ๋ฌํฉ๋๋ค. ๊ฐ์ฅ ์ด์์ ์ด์ง๋ง ๋ถ๊ฐ์ ์ธ ๊ด๋ฆฌ๊ฐ ํ์ํฉ๋๋ค.
์ด๋ค ์ ๋ต์ ์ ํํ๋ , ์๋ฒ์ ํด๋ผ์ด์ธํธ ์์ชฝ์์ ๋ ๋๋ง๋๋ ๋ ์ง์๋ ๋ฐ๋์ timeZone์ ๋ช
์ํด์ผ ํฉ๋๋ค. ํ์์กด์ด ์๋ต๋ ๋ ์ง๋ ๋ ๊ฐ์ ์๋ก ๋ค๋ฅธ ๊ฐ์ ๊ฐ์ง๋ ์ ์ฌ์ ๋ฒ๊ทธ์
๋๋ค.
ํตํ์๋ ๋ก์ผ์ผ์ด ์๋๋ผ ํตํ ์ฝ๋๊ฐ ํ์ํฉ๋๋ค
๋ก์ผ์ผ๊ณผ ํตํ๋ ๋ณ๊ฐ์ ๊ฐ๋
์
๋๋ค. fr-FR์ด ๋ฌด์กฐ๊ฑด ์ ๋กํ๋ฅผ ์๋ฏธํ์ง๋ ์์ต๋๋ค. ํ๋์ค ์ฌ์ฉ์๊ฐ ๋ฏธ๊ตญ ๋ฌ๋ฌ ์ฒญ๊ตฌ์๋ฅผ ์กฐํํ ์๋ ์์ต๋๋ค.
์ฝ๋๋ฅผ ํด๋ฆฝ๋ณด๋์ ๋ณต์ฌ
๋ก์ผ์ผ์ ๊ตฌ๋ถ ๊ธฐํธ, ์๋ฆฟ์ ๊ทธ๋ฃนํ, ๊ธฐํธ์ ์์น๋ฅผ ์ ์ดํฉ๋๋ค. ํตํ ์์ฒด๋ ๋น์ฆ๋์ค ๋ฐ์ดํฐ๋ก๋ถํฐ ์ฃผ์ด์ ธ์ผ ํฉ๋๋ค. ๋ก์ผ์ผ๋ก๋ถํฐ ํตํ๋ฅผ ์์๋ก ์ ์ถํ๋ ๊ฒ์ ํ๊ณ ์ค๋ฅ๋ฅผ ์ ๋ฐํฉ๋๋ค.
๋ํ currencyDisplay ์ต์
๋ ์ ์ฉํฉ๋๋ค. ์ฌ๋ฌ ๋ฌ๋ฌ ํตํ๊ฐ ๊ณต์กดํ๋ ํ๋ฉด์์ "code"๋ฅผ ์ง์ ํ๋ฉด ๋ฏธ๊ตญ, ์บ๋๋ค, ํธ์ฃผ ๋ฌ๋ฌ ๊ฐ์ ํผ์ ์ ํ์คํ๊ฒ ๋ฐฉ์งํ ์ ์์ต๋๋ค.
์ ๋์ ์๊ฐ๋ณด๋ค ์๋์ ์๊ฐ์ด ์ฝ๊ธฐ ์ฝ์ต๋๋ค
์ต๊ทผ ๋ฐ์ํ ์ผ์ด๋ผ๋ฉด ๋ณต์กํ ํ์์คํฌํ๋ณด๋ค "2์๊ฐ ์ "์ด ํจ์ฌ ์ง๊ด์ ์ด๋ฉฐ, Intl.RelativeTimeFormat์ด ์ด๋ฅผ ์์ฐ์ค๋ฝ๊ฒ ํ์งํํฉ๋๋ค.
์ฝ๋๋ฅผ ํด๋ฆฝ๋ณด๋์ ๋ณต์ฌ
numeric: "auto"๋ฅผ ์ง์ ํ๋ฉด "1์ผ ์ " ๋์ "์ด์ "๋ผ๋ ์์ฐ์ค๋ฌ์ด ํํ์ ์ป์ ์ ์์ต๋๋ค.
Intlayer๊ฐ ์ ๊ณตํ๋ ํธ์์ฑ
Intlayer๋ ์ด๋ฌํ API๋ค์ ์บ์ฑ์ด ๋ด์ฅ๋ ์ ํธ๋ฆฌํฐ ํจ์๋ก ๊ฐ์ธ ๋์ด ๊ฐ๋ฐ์๊ฐ ์ง์ Map ์บ์๋ฅผ ๊ด๋ฆฌํ ํ์๊ฐ ์์ผ๋ฉฐ, ๋งค๋ฒ ์ธ์๋ก ์ ๋ฌํ์ง ์์๋ ํ์ฌ ํ์ฑํ๋ ๋ก์ผ์ผ์ ๊ธฐ๋ณธ๊ฐ์ผ๋ก ์ ์ฉํด ์ค๋๋ค.
์ฝ๋๋ฅผ ํด๋ฆฝ๋ณด๋์ ๋ณต์ฌ
date() ํจ์๋ ๊ฐํธํ ํ๋ฆฌ์
("short", "long", "dateOnly", "timeOnly", "full")์ ์ง์ํฉ๋๋ค. React์ Vue๋ฅผ ์ํ ํ
๋ฐ ์ปดํฌ์ ๋ธ๋ ์ ๊ณต๋์ด ์ปจํ
์คํธ๋ก๋ถํฐ ํ์ฌ ๋ก์ผ์ผ์ ์๋์ผ๋ก ํด์ํฉ๋๋ค.
์ด๋ ํ์ค ํ๋ซํผ API ์์ ์บ์ฑ ๊ณ์ธต๊ณผ ๋ก์ผ์ผ ์ฃผ์
๊ธฐ๋ฅ์ ๋ํ ๊ฒ์ผ๋ก, ์ค์ ํฌ๋งทํ
์ฐ์ฐ์ ์จ์ ํ Intl์ ๋ฐ๋ฆ
๋๋ค. ์ ์ฒด ์๊ทธ๋์ฒ๋ ํฌ๋งทํฐ ๊ณต์ ๋ฌธ์๋ฅผ ํ์ธํ์ธ์.
ํํ ์ค์๋ค
- ๋ก์ผ์ผ์ ์ง์ ํ์ง ์์
toLocaleDateString(). ๋ฐํ์ ํธ์คํธ์ ๋ก์ผ์ผ์ ์ฌ์ฉํ๋ฏ๋ก ์๋ฒ ํ๊ฒฝ์ ๋ฐ๋ผ ๊ฒฐ๊ณผ๊ฐ ๋ฌ๋ผ์ง๋๋ค. - ์บ์ฑ ์์ด ๋ฃจํ ๋ด์์ ๋งค๋ฒ ์์ฑ. ํฌ๋งทํฐ ์ธ์คํด์ค ์์ฑ์ด ์ฑ๋ฅ ๋ณ๋ชฉ์ ๋๋ถ๋ถ์ ์ฐจ์งํฉ๋๋ค.
- ๋ํ(isomorphic) ๋ ์ง ๋ ๋๋ง ์
timeZone๋๋ฝ. ๋ก์ปฌ์์๋ ๋ฐ๊ฒฌ๋์ง ์๋ ํ์ด๋๋ ์ด์ ์ค๋ฅ์ ์ฃผ๋ฒ์ ๋๋ค. - ๋ก์ผ์ผ๋ก๋ถํฐ ํตํ๋ฅผ ์ฃ๋ถ๋ฆฌ ์ ์ถ.
fr-FR์ด ๋ฐ๋์ ์ ๋กํ ๊ฒฐ์ ๋ฅผ ์๋ฏธํ์ง ์์ต๋๋ค. - ํ๋ฉด ํ์์ฉ ๋ฌธ์์ด์ ๊ธฐ๋ณธ
sort()์ฌ์ฉ. ํญ์Intl.Collator๋ฅผ ์ฌ์ฉํ์ธ์. - ์์ด๋ ์์ผ ์ด๋ฆ์ ์ง์ ํ๋์ฝ๋ฉ. ๋ชจ๋ ์ธ์ด์ ํ์ค ๋ฐ์ดํฐ๊ฐ ์ด๋ฏธ CLDR์ ๋ฑ๋ก๋์ด ์์ต๋๋ค.
- ์๋ ์๊ฐ์์
numeric: "always"๋ฐฉ์น. "์ด์ "๋ผ๋ ๋ช ํํ ๋จ์ด๊ฐ ์์์๋ ๊ธฐ๊ณ์ ์ธ "1์ผ ์ "์ ์ถ๋ ฅํ๊ฒ ๋ฉ๋๋ค.
๋ ์์๋ณด๊ธฐ
๋๊ธ
์์ง ๋๊ธ์ด ์์ต๋๋ค. ์ฒซ ๋ฒ์งธ๋ก ์๊ฒฌ์ ๋๋ ๋ณด์ธ์.
