์๋ฌธ ์ ๋ชฉ: Temporal: The 9-Year Journey to Fix Time in JavaScript ์๋ฌธ ๋งํฌ: https://bloomberg.github.io/js-blog/post/temporal/ ๋ฒ์ญ์ผ: 2026-03-13 KST
Bloomberg์ ์๋ฐ์คํฌ๋ฆฝํธ ์ธํ๋ผ ํ์ ์ค๋ซ๋์ ๊ธ์ต ๋จ๋ง๊ธฐ, ์๋ฒ, UI ์ ๋ฐ์์ ์๊ฐ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ค ์๋ค. ๋ค์ํ ์๊ฐ๋, ์ฆ์ DST ๋ณ๊ฒฝ, ๊ณ ์ ๋ฐ ํ์์คํฌํ ์๊ตฌ๊ฐ ๊ฒน์น๋ฉด์ ๊ธฐ์กด Date API์ ํ๊ณ๊ฐ ๋ฐ๋ณต์ ์ผ๋ก ๋๋ฌ๋ฌ๊ณ , ์ด ๋ฌธ์ ๋ฅผ ๊ทผ๋ณธ์ ์ผ๋ก ํด๊ฒฐํ๊ธฐ ์ํ ํ์คํ ๋
ธ๋ ฅ์ด ๋ฐ๋ก Temporal์ด์๋ค.
์ด๊ธฐ ์๋ฐ์คํฌ๋ฆฝํธ์ Date๋ 1995๋
์ ์ ์ฝ ์์์ ์๋ฐ ๊ตฌํ์ ๋น ๋ฅด๊ฒ ์ด์ํ ๊ฒฐ๊ณผ๋ฌผ์ด์๋ค. ๋น์์๋ ์ค์ฉ์ ์ธ ์ ํ์ด์์ง๋ง, ์ค๋๋ ์ ์น ์ ํ๋ฆฌ์ผ์ด์
์ด ์๊ตฌํ๋ ์ ํํ ์๊ฐ ๋ชจ๋ธ์๋ ๋ง์ง ์๋๋ค.
๋ํ์ ์ธ ๋ฌธ์ ๋ ๋ค์๊ณผ ๊ฐ๋ค.
- ๊ฐ๋ณ์ฑ(mutability): ํฌํผ ํจ์๊ฐ ์๋ณธ
Date๋ฅผ ์๋์น ์๊ฒ ๋ณ๊ฒฝํ๊ธฐ ์ฝ๋ค. - ์ ๊ณ์ฐ์ ์ง๊ด์ฑ ๋ถ์กฑ: 1์ 31์ผ์ ํ ๋ฌ์ ๋ํ๋๋ 2์ ๋ง์ด ์๋๋ผ 3์ ์ด๋ก ๋์ด๊ฐ๋ ์์ ํจ์ ์ด ์๊ธด๋ค.
- ์ ๋งคํ ๋ฌธ์์ด ํ์ฑ: ๊ฑฐ์ ISO์ฒ๋ผ ๋ณด์ด์ง๋ง ์์ ํ ๊ฐ์ง ์์ ์ ๋ ฅ์ ๋ธ๋ผ์ฐ์ ๋ง๋ค ๋ค๋ฅด๊ฒ ํด์๋ ์ ์๋ค.
- ์๊ฐ๋ ์ฒ๋ฆฌ ํ๊ณ: ๋จธ์ ๋ก์ปฌ ์๊ฐ๋์ ์ฌ์ฉ์ ์ค์ ์๊ฐ๋๊ฐ ๋ค๋ฅผ ๋ ์ผ๊ด๋ ๋ชจ๋ธ์ ์ ๊ณตํ๊ธฐ ์ด๋ ต๋ค.
์ด๋ฐ ๋ฌธ์ ๋๋ฌธ์ ์น ์ํ๊ณ๋ Moment.js ๊ฐ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ๊ณต๋ฐฑ์ ๋ฉ์ ์๋ค. ํ์ง๋ง ์ด ๋ฐฉ์์ ๋ฒ๋ค ํฌ๊ธฐ ์ฆ๊ฐ, locale/timezone ๋ฐ์ดํฐ ๋๋ด, tree-shaking ํ๊ณ ๊ฐ์ ์๋ก์ด ๋น์ฉ์ ๋ง๋ค์๋ค.
Temporal์ ๊ธฐ์กด Date๋ฅผ ์กฐ๊ธ ์๋ณด๋ ์์ค์ด ์๋๋ผ, ์๊ฐ ๋ฌธ์ ๋ฅผ ์ ๋๋ก ๋ชจ๋ธ๋งํ๋ ์ ํ์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋์
ํ๋ ค๋ ์๋์๋ค.
ํต์ฌ ๋ฐฉํฅ์ ๋ค์๊ณผ ๊ฐ๋ค.
Date์ ์ค์ง์ ๋์ฒด์ฌ ์ ๊ณต- ๋จ์ผ API ๋์ ๋ชฉ์ ๋ณ ์๊ฐ ํ์ ์ ๊ณต
- ๊ธฐ๋ณธ์ ์ผ๋ก ๋ถ๋ณ(immutable)
- ์๊ฐ๋์ ๋ฌ๋ ฅ(calendar)์ 1๊ธ ๊ฐ๋ ์ผ๋ก ์ง์
- ๋ ๋์ ์ ๋ฐ๋(์: ๋๋ ธ์ด) ์ฒ๋ฆฌ
์ฆ, โํ๋์ ๋์จํ ํ์ ์ผ๋ก ๋ชจ๋ ์๊ฐ ๋ฌธ์ ๋ฅผ ํด๊ฒฐโํ๋ ค๋ ๊ณผ๊ฑฐ ๋ชจ๋ธ์ ๋ฒ๋ฆฌ๊ณ , ์ฉ๋๋ณ ํ์ ๊ณผ ๋ช ์์ ์ธ ์๋ฏธ๋ฅผ ๋์ ํ ๊ฒ์ด๋ค.
์๋ฐ์คํฌ๋ฆฝํธ๋ ๋ชจ๋ ๋ธ๋ผ์ฐ์ ์์ ๋์๊ฐ๋ ๊ณต์ฉ ์ธ์ด์ด๊ธฐ ๋๋ฌธ์, ์ด๋ ํ ์กฐ์ง์ด ๋จ๋ ์ผ๋ก API๋ฅผ ๋ฐ๊ฟ ์ ์๋ค. ๋ณ๊ฒฝ์ TC39 ํ๋ก์ธ์ค๋ฅผ ๊ฑฐ์น๋ฉฐ, ์์ด๋์ด ํฉ์๋ถํฐ ๊ตฌํ ํผ๋๋ฐฑ, ์ต์ข ํ์คํ๊น์ง ์ฌ๋ฌ ๋จ๊ณ๋ฅผ ํต๊ณผํด์ผ ํ๋ค.
Temporal์ 2017~2018๋ ๋ฌด๋ ต ๋ฌธ์ ์ธ์๊ณผ ์ด๊ธฐ ์ค๊ณ๋ฅผ ์ธ์ ๋ฐ์์ง๋ง, ์ดํ ์ค์ ๋ก ์ธ ์ ์๋ API๋ก ๋ค๋ฌ๊ธฐ๊น์ง ๊ธด ์๊ฐ์ด ํ์ํ๋ค. ๊ทธ ๊ณผ์ ์๋ ๋ค์๊ณผ ๊ฐ์ ํ์ค์ ์ด์ ๊ฐ ์์๋ค.
- ์๊ฐ๊ณผ ๋ ์ง๋ ํ๋ฉด์ ๋จ์์ฑ์ ๋นํด ์์ธ ์ผ์ด์ค๊ฐ ๋งค์ฐ ๋ง๋ค.
- ์๊ฐ๋, DST, ๋ฌ๋ ฅ, ์ ๋ฐ๋, ํ์ฑ/ํฌ๋งทํ ์๊ตฌ๋ฅผ ๋ชจ๋ ํจ๊ป ๊ณ ๋ คํด์ผ ํ๋ค.
- ๋ธ๋ผ์ฐ์ /์์ง/๋ฐํ์/๊ตญ์ ํ API์ ์กฐํ๋ฅผ ๋ง์ถฐ์ผ ํ๋ค.
- ์ค์ ํ์ ์์ ๋ฐ๋ณต๋๋ ์ค์๊น์ง API ์ค๊ณ์ ๋ฐ์ํด์ผ ํ๋ค.
Bloomberg, Igalia, Google ๊ตญ์ ํ ํ, Microsoft ์ถ์ ์ฑํผ์ธ ๋ฑ ์ฌ๋ฌ ์ฃผ์ฒด๊ฐ ์ฅ๊ธฐ๊ฐ ํ์ ํ ์ด์ ๋ ์ฌ๊ธฐ์ ์๋ค.
์ด ๊ธ์ด FE ๊ฐ๋ฐ์์๊ฒ ์ค์ํ ์ด์ ๋ Temporal์ด ๋จ์ํ โ์ ๋ ์ง ๋ผ์ด๋ธ๋ฌ๋ฆฌโ๊ฐ ์๋๊ธฐ ๋๋ฌธ์ด๋ค. ์ด ์ ์์ ์๋ฐ์คํฌ๋ฆฝํธ ์๊ฐ ์ฒ๋ฆฌ์ ๊ธฐ๋ณธ ์ฒ ํ์ ๋ฐ๊พผ๋ค.
์๊ฐ๋๊ฐ ์๋ ๊ฐ๊ณผ ์๋ ๊ฐ์ ๊ตฌ๋ถํ์ง ์์ ์ฑ ์์ด ์ฐ๋ ์ต๊ด์ด ์ค๋ฅ๋ฅผ ๋ง๋ ๋ค. Temporal์ ๊ฐ์ ์๋ฏธ๋ฅผ ํ์ ์์ค์์ ๋ ๋ถ๋ช ํ๊ฒ ๋๋ฌ๋ด๋ ๋ฐฉํฅ์ ํํ๋ค.
React ๊ฐ์ ํ๊ฒฝ์์ ์ํ ์ถ์ , ๋ฉ๋ชจ์ด์ ์ด์ , ๋น๊ต ๋ก์ง์ ๋ค๋ฃฐ ๋ ๋ถ๋ณ ๊ฐ์ ํจ์ฌ ์์ธก ๊ฐ๋ฅํ๋ค. ๊ณผ๊ฑฐ Moment.js ์ํ๊ณ๊ฐ ๊ฒช์๋ โ๊ฐ๋ณ ๊ฐ์ฒด๋ก ์ธํ ํผ๋โ์ ์ค์ด๋ ๋ฐ ์ ๋ฆฌํ๋ค.
๊ธ๋ก๋ฒ ์๋น์ค์์๋ โ์๋ฒ ์๊ฐ๋โ, โ์ฌ์ฉ์ ์ค์ ์๊ฐ๋โ, โ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ ์ง์ญ ์๊ฐ๋โ๊ฐ ๋ค๋ฅผ ์ ์๋ค. Temporal์ ์ด ๋ณต์ก์ฑ์ ์จ๊ธฐ๊ธฐ๋ณด๋ค ๋ชจ๋ธ ์์ผ๋ก ๊ฐ์ ธ์จ๋ค.
ํ์ค API๊ฐ ์ถฉ๋ถํ ๊ฐ๋ ฅํด์ง๋ฉด ๋ ์ง ์ฒ๋ฆฌ ๋๋ฌธ์ ๋ฌด๊ฑฐ์ด ์๋ํํฐ ํจํค์ง๋ฅผ ๋ค์ด๋ ๋ถ๋ด์ด ์ค์ด๋ค ์ ์๋ค. ๋ฒ๋ค ์ต์ ํ์ ์ฅ๊ธฐ ์ ์ง๋ณด์ ๊ด์ ์์๋ ์๋ฏธ๊ฐ ํฌ๋ค.
Temporal์ ์ด๋ ๋ ๊ฐ์๊ธฐ ๋ฑ์ฅํ ๊ธฐ๋ฅ์ด ์๋๋ผ, ์๋ฐ์คํฌ๋ฆฝํธ ์ํ๊ณ๊ฐ ์์ญ ๋ ๋์ ๋์ ํด ์จ ์๊ฐ ์ฒ๋ฆฌ์ ๋ถ๋ง์ ์ ๋ฆฌํด ํ์ค์ผ๋ก ์ฎ๊ธฐ๋ ์์ ์ ๊ฒฐ๊ณผ๋ค. ํนํ ๋๊ท๋ชจ ์๋น์ค, ๊ธ์ต ์์คํ , ํ์ ๋๊ตฌ์ฒ๋ผ ์๊ฐ ์ ํ๋๊ฐ ์ ํ ํ์ง๊ณผ ์ง์ ์ฐ๊ฒฐ๋๋ ํ๊ฒฝ์์ ๊ทธ ๊ฐ์น๊ฐ ํฌ๋ค.
ํ๋ก ํธ์๋ ์ค๋ฌด์ ์ ์ฅ์์๋ ์ง๊ธ ๋น์ฅ ์ ์ฒด ์ฑ์ Temporal๋ก ๋ฐ๊พธ๋ ๋ฌธ์ ๋ณด๋ค,
- ๊ธฐ์กด
Date์ฌ์ฉ์ด ์ด๋ค ์์ผ๋ก ๋ฒ๊ทธ๋ฅผ ๋ง๋๋์ง ์ดํดํ๊ณ , - ์๊ฐ ๊ด๋ จ ๋๋ฉ์ธ์ ๋ ๋ช ์์ ์ผ๋ก ๋ชจ๋ธ๋งํ๋ฉฐ,
- ์ฅ๊ธฐ์ ์ผ๋ก Temporal ๋์ ๊ฐ๋ฅ์ฑ์ ์ผ๋์ ๋ ์ค๊ณ๋ฅผ ์์ํ๋ ๊ฒ
์ด ๋ ์ค์ํ๋ค.
Temporal์ โ๋ ์ง API ๊ฐ์ โ์ด ์๋๋ผ, ์๋ฐ์คํฌ๋ฆฝํธ์์ ์๊ฐ์ ๋ค๋ฃจ๋ ๋ฐฉ์ ์์ฒด๋ฅผ ๋ค์ ์ ์ํ๋ ์์ ์ ๊ฐ๊น๋ค.